gpt4 book ai didi

c - c程序中的多个fork()

转载 作者:太空宇宙 更新时间:2023-11-04 12:30:54 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
pid_t pid1, pid2, pid3, pid4;
pid1=fork();

if (pid1!=0) {
pid2=fork();
pid3=fork();
}else {
pid4=fork();
}
return 0;
}

您好,以下代码执行 4 个 fork 。首先,原始进程(我们称之为 P0)执行“pid1=fork()”并创建一个子进程(我们称之为 P1)。然后原始进程再次执行 pid2=fork() 并创建另一个子进程(我们称之为 P2)。然后P2和P0都执行“pid3=fork()”。所以 P0 创建了第三个 child (称为 P3),P2 成为父节点并创建了一个 child (称为 P4)。最后,在 else 语句中,第一个 child (P1)创建了一个 child (P5)。所以这棵树就像:

                  P0
P1 P2 P3
P5 P4

我的问题是:我说得对不对?提前致谢。

最佳答案

My question is: Am i right or not?

是的。

正如 Paul R 在评论中所说,尝试放入一些 printf。例如在

pid1 = fork()

尝试放置

printf("pid %d: pid1 = fork(), result = %d\n", getpid(), pid1);

getpid() 获取当前进程的pid。

关于c - c程序中的多个fork(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43326857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com