可能重复:
Pipe in C UNIX shell
我试图在2个子进程之间创建一个管道: Child1关闭输入并输出到管道 Child2关闭输出并接受输入:
pipe(&fd[0]); //Create a pipe
proc1 = fork();
//Child process 1
if (proc1 == 0)
{
close(fd[0]); //process1 doenst need to read from pipe
dup2(fd[1], STD_OUTPUT);
close(fd[1]);
execvp(parameter[0], parameter); //Execute the process
}
//Create a second child process
else
{
//Child process 2
proc2 = fork();
if (proc2 == 0)
{
close(fd[1]);
dup2(fd[0], STD_INPUT);
close(fd[0]);
execvp(parameter2[0], parameter2);
}
//Parent process
else
{
waitpid(-1, &status, 0); //Wait for the child to be done
}
}
但是,我在某个地方出错了,我不确切知道在哪里(没有任何错误,更多的是逻辑错误)
答案 0 :(得分:2)
管道向后。 fd[1]
用于撰写,fd[0]
用于阅读。
旁注: pipe(&fd[0]);
看起来有点奇怪...... pipe(fd);
相当,但(对我来说)更清晰。