所以我有一个函数,它接受一个参数n,它是一个表示要分叉的子节点数的int,并将打印所有已经分叉的子节点的pid . 所以这个函数的目标是分叉n个孩子,每个孩子打印出它的pid . 我是新的分叉,不知道如何完成这样的任务 .
提前感谢您提供的任何帮助:)
这就是我现在所拥有的,它似乎正在起作用,但程序一旦完成就永远不会结束 . 我该怎么办
void print_child_pid(int n) {
int i;
pid_t pid;
for (i = 1; i <= n; i++) {
pid = fork();
if (pid == -1) {
/* error handling here, if needed */
return;
}
if (pid == 0) {
printf("child: process id = %d\n", getpid());
wait();
return;
}
}
return;
}
1 回答
你很接近,但是当你在父进程中调用
waitpid
时,你在子进程中调用wait
. 在wikipedia上有一个很好的解释 . 我已修改下面的代码以使用它 .输出n = 4: