gpt4 book ai didi

c - Linux C 编码中的 Fork() 命令

转载 作者:行者123 更新时间:2023-11-30 21:07:45 25 4
gpt4 key购买 nike

我很难理解使用 fork() 命令最终会产生多少个进程。如果我从变量 pid_t pid; 开始并调用 fork() 我将有一个子进程和一个父进程。

现在,如果我在第一个 fork() 之后立即调用 fork 会怎样。我知道有 3 个还是 4 个进程吗?就像这个 fork 是对父级和子级都调用的,还是只对子级调用?那么子进程是否 fork() 另一个子进程因此创建了 3 个进程?或者在父进程和子进程上都调用了 fork,所以现在父进程将有一个子进程,该子进程也有自己的子进程,并且父进程现在有第二个子进程?

如果第三次再次调用 fork,所有 3 或 4 个进程都会获得子进程吗?只有最新的 child 吗?

根据 fork() 的工作方式,调用 fork() 3 次时会创建多少个进程?我陷入了 4,6 或 8 之间。

Here is the Linux C coding. How many processes will run when this program iis executed, including itself. Every process must terminate using the return(0)

最佳答案

当调用fork()时,该过程会重复,父进程和子进程都继续执行程序中的所有代码。如果您希望它们采取不同的行为,则需要检查返回值 - 它在子级中返回 0,在父级中返回子级的 PID。如果您没有任何以此为条件的代码,它们都会以相同的方式执行所有操作。因此,如果它再次调用 fork(),父进程和子进程都会发生这种情况,最终会得到 4 个进程:原始父进程、两个子进程和一个孙进程。第三个 fork() 产生 8 个进程。

关于c - Linux C 编码中的 Fork() 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42348717/

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