如何重定向fork()创建的子进程的IO并使用exec()函数?

时间:2012-11-03 06:19:17

标签: c linux ipc fork

我用C语言编写Shell。用户应该能够执行各种命令并使用管道(|)将一个命令的输入重定向到另一个命令。主shell进程是父进程并为每个命令分配新进程,而在子进程中,该命令由exec *()函数调用。

但我无法弄清楚如何将一个子进程的标准输入/输出重定向到另一个进程。

1 个答案:

答案 0 :(得分:1)

可能这可以帮助你......

int f=open(somefile, O_WRONLY | O_CREAT, S_IRWXU);
dup2(f,1);  //redirecting output to file
//execute your first command here using fork
close(f);
int f=open(somefile, O_RDONLY | O_CREAT, S_IRWXU);
dup2(f,0);    //this will give the ouput of the first command to stdout 
//i.e. the input is present for second one
//execute your second command here
close(f);