我想在C程序中實現一個簡單的「cat file1> file1」命令。我曾嘗試以下,但它不工作...C程序中的I/O重定向
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
,但它不是,我不知道爲什麼。我該怎麼做?
確定後,是什麼在運行時我得到的是 狗屎:標準輸出:錯誤的文件描述符 – 2012-08-13 03:31:05
更新答案 - 全部基於內存雖然,手指交叉,我記錯... – John3136 2012-08-13 03:33:29
從文件流獲取文件描述符的函數是'fileno()'。不要忘記在'execlp()'之前''close()'或'fclose()'這個流是'dup()'d。 – 2012-08-13 05:08:09