我正在做这个C程序,它就像一个终端,我已经实现了" dir"命令,但我也想实现重定向">"运算符,所以我可以将所有内容重定向到文件。我制作了一个等待输入的C程序,我希望将该输入发送到.txt文件。
这是output.c,它等待用户输入。
#include <stdio.h>
#define SIZE 500
int main(int argc, char *argv[]){
char text[SIZE];
scanf("%s", text);
return 0;
}
这是应该将我的输入重定向到我的文件的代码。 UPDATE:
int rv;
pid_t pid;
int commpipe[2];
if(argc > 2){
char filename[] = "output.txt";
int old_prn_han, new_prn_han;
old_prn_han = dup(fileno(stdout));
strcpy(filename, argv[2]);
if((new_prn_han = open(filename, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR)) == -1){
fprintf(stderr, "Unable to create/open file '%s'\n", filename);
return 1;
}
dup2(new_prn_han, fileno(stdout));
if((pid=fork()) == -1){
fprintf(stderr, "Error forking new process!\n");
exit(2);
}
if(pid){
//Parent process
close(commpipe[0]);
setvbuf(stdout,(char*)NULL,_IONBF,0);
sleep(2);
wait(&rv);
fprintf(stderr, "Child exited with a %d value\n", rv);
}else{
//Child process
dup2(commpipe[0],0);
close(commpipe[1]);
if(execl("output", "output", NULL) == -1){
fprintf(stderr, "Error executing new process!\n");
exit(3);
}
}
close(fileno(stdout));
dup2(old_prn_han, fileno(stdout));
}
问题是,似乎我的输出程序等待用户输入不执行。你能帮助我吗?
UPDATE 我已经更新了我的代码。现在新的流程正在执行,但是当我输入类似名称&#39;在stdin,我的文件包含一些奇怪的符号,直到我退出主程序才出现。那是为什么?