我是所有fork
,exec
和wait
函数的新手。我有一个作业,这需要我fork
我的主要过程i次,然后使用所有的孩子写入每个过程的不同的fifos。例如,如果我有3个孩子,我将不得不写3个不同的fifos。然后,我的父进程必须等待第一个完成在任何fifo上写入,并从该特定fifo读取数据。困扰我的是我的父进程必须等待第一个完成而不是所有进程完成。如果我不得不等待所有,我会使用while(wait(NULL)>0)
。但是你在这种情况下做了什么?我在下面写了一个示例代码:
pid_t *pid;
int i;
pid = malloc(sizeof(pid_t)*children);
for(i=0;i<children;i++)
{
if((pid[i]=fork())<0)
{ /* error */ }
if(pid[i]==0)
{
//WriteOnFifos
return 0;
}
else
{
//wait for the first process to finish
}
}
提前致谢。任何帮助,将不胜感激。
答案 0 :(得分:1)
只需使用wait(NULL)
即可。正如文档所说,它会等到其中一个孩子终止。所以它会做你想要的,即:等待第一个孩子完成。