C プログラムで単純な「cat file1 > file1」コマンドを実装したいと考えています。以下を試してみましたが、うまくいきません...
main () {
pid_t pid;
FILE *ip, *op;
char *args[3];
printf("Name of the executable program\n\t");
scanf("%s", &name[0]); // I entered cat here
printf("Name of the input file\n\t");
scanf("%s", &name[1]); //file1.txt
printf("Name of the output file\n\t");
scanf("%s", &name[0]); //file2.txt
pid = fork();
if(pid == -1)
perror("fork() error");
else if(pid > 0)
waitpid(-1, NULL, 0);
else if (pid == 0) {
op = fopen(name[2], "w");
close(1);
dup(op);
execlp(name[0], name[1], NULL);
}
return 0;
}// end of main()
execlp()
が実行cat file1.txt
され、その出力が にリダイレクトされると思っていましたfile2.txt
が、そうではなく、理由もわかりません。どうすればいいのですか?