[英]C - Create 3 child processes with fork()
我想用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?
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
}
您可以使用fork 3次,但必須確保只從父進程中調用fork。
最簡單的方法是確保孩子永遠不會逃離其{}區塊。
if((pid = fork())<0) /*handle error*/;
if(pid == 0){
//do child stuff
exit(0); //the child must not escape this {} block
}
//do parent stuff
waitpid(2)很簡單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.