我有以下代码 fork() 的 2 个来自共同父级的子级,并在它们之间实现了管道。当我在父级中调用 wait() 函数时,只有程序完美运行。但是,如果我尝试调用 wait() 函数两次(从两个孩子那里收获),程序什么也不做,必须强制退出。
谁能告诉我为什么我不能在这里等两个孩子?
int main()
{
int status;
int pipeline[2];
pipe(pipeline);
pid_t pid_A, pid_B;
if( !(pid_A = fork()) )
{
dup2(pipeline[1], 1);
close(pipeline[0]);
close(pipeline[1]);
execl("/bin/ls", "ls", 0);
}
if( !(pid_B = fork()) )
{
dup2(pipeline[0], 0);
close(pipeline[0]);
close(pipeline[1]);
execl("/usr/bin/wc", "wc", 0);
}
wait(&status);
wait(&status);
}