【发布时间】:2016-05-10 10:06:31
【问题描述】:
我想用 fork() 创建正好 3 个子进程。这是我创建一个子进程的代码:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
void main(){
int pid = fork();
if(pid < 0){
/* was not successfully */
}
else if (pid > 0){
/* Parent process */
}
else{
/* Child process */
for (int i = 0; i < 20; i++){
printf("1");
usleep(1000);
}
exit(0);
}
}
子进程应该打印 20 次数字 1 并在每次之后休眠 1 毫秒。
我知道我不能只使用 fork() 3 次,因为那样我会得到 7 个子进程。但是我怎样才能得到准确的 3 呢?我该怎么做,每个子进程都打印一个其他数字?例如第一个进程编号为 1,第二个进程编号为 2,第三个进程编号为 3。
并且父母应该使用 waitpid() 来等待所有 3 个孩子。如果他们完成了,父母应该打印一条消息。但是我如何在这里使用 waitpid?
【问题讨论】: