我想用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);
}
}
子进程应该打印数字1的20倍,每次后睡1毫秒。
我知道我不能使用fork()3次,因为那时我会得到7个子进程。但我怎么能得到3?我怎么能这样做,每个子进程都打印另一个数字?例如,第一个处理编号1,第二个处理编号2和第三个处理编号3.
父母应该使用waitpid()等待所有3个孩子。如果完成,父母应该打印一条消息。但是我怎么能在这里使用waitpid呢?
答案 0 :(得分:4)
for (int kid = 0; kid < 3; ++kid) {
int pid = fork();
if(pid < 0){
exit(EXIT_FAILURE);
}
else if (pid > 0){
/* Parent process */
}
else{
/* Child process */
exit(EXIT_SUCCESS);
}
}
for (int kid = 0; kid < 3; ++kid) {
int status;
pid_t pid = wait(&status); // kids could be ready in any order
}
答案 1 :(得分:1)