gpt4 book ai didi

c - fork() 语句中的进程数量(包括程序)

转载 作者:行者123 更新时间:2023-11-30 19:01:09 25 4
gpt4 key购买 nike

我正在学习 Linux 中的 fork 和进程,并且有一个关于初始父进程的问题。这个初始父进程是否被视为程序?

例如,在这段代码中,我创建了 2 个 fork

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv, char **envp)
{
printf("%d *\n", getpid());
fork();
printf("%d *\n", getpid());
fork();
printf("%d *\n", getpid());
sleep(20);
return EXIT_SUCCESS;
}

据我所知,会有一个初始父进程(我相信是程序),然后会有一个初始 fork 创建一个子进程。

这剩下 2 个进程。然后另一个 fork 创建另外 2 个子进程,总共 5 个进程,包括初始父进程。

根据这种理解,子进程的总数将为 3(2^2-1),除了初始父进程之外创建的进程总数将为 4。

我的想法正确吗?

此外,什么会导致 fork 失败?

最佳答案

不完全是这样,每个 fork() 调用都会创建一个额外的进程。在此示例中,您总共有 4 个进程,包括父进程。

编辑:我建议您阅读手册以了解您学习和使用的方法,例如http://man7.org/linux/man-pages/man2/fork.2.html

您会在那里找到所有解释,包括可能的失败原因。

关于c - fork() 语句中的进程数量(包括程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58336551/

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