我需要创建“n”个子进程,并且它们必须在一个随机的秒数内休眠,并且父进程必须建议任何子进程何时完成。问题是每个子进程一个接一个地运行,我需要它们并行工作。 (在代码中我只创建了3个孩子。)
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
int main(void)
{
pid_t pid;
int x,zeit,status,w,n=0;
for(x=1;x<=3;x++)
{
pid=fork();
n++;
srand(time(NULL));
if(pid)
{
w=wait(&status);
printf("Process %d finished in %d seconds (Dad:%d cuenta %d)\n",w,WEXITSTATUS(status),getppid(),n);
}
else
{
int n;
zeit=rand()%3+1;
sleep(zeit);
exit(zeit);
}
}
exit(0);
return 0;
}
答案 0 :(得分:2)
在开始下一个过程之前,您明确等待每个过程完成
for(x=1;x<=3;x++)
{
pid=fork();
n++;
srand(time(NULL));
if(pid)
{
w=wait(&status);
printf("Process %d finished in %d seconds (Dad:%d cuenta %d)\n",
w, WEXITSTATUS(status), getppid(), n);
...
}
如果您希望它们并行运行,您将不得不制作3个不同的流程,并在之前启动它们,等待其中任何一个完成。