gpt4 book ai didi

c - 这段代码中创建了多少个进程?

转载 作者:行者123 更新时间:2023-12-01 23:05:53 25 4
gpt4 key购买 nike

你能帮我解决这个问题吗?我对进程的创建有点困惑,我认为创建的进程数是 7,对吗?

int main(){
pid_t pid;
int i;
for (i = 0; i < 3; i++){
pid = fork();
if(pid > 0){
printf("I'm father\n");
}else{
sleep(1);
}
}

return 0;
}

最佳答案

你是对的,有 7 个进程被 fork (加上原始父进程,总共有 8 个)。关键概念是 fork 进程最初(几乎)完全是其父进程的副本,因此特别是,它们具有相同的变量值,并通过从 fork() 调用返回开始执行。下表列出了将在您的程序中发生的分支:

  i  proc0  proc1  proc2  proc3  proc4  proc5  proc6  proc7
-----------------------------------------------------------------
0 +1 new
1 +1 +1 new new
2 +1 +1 +1 +1 new new new new

+1 表示 fork ;将它们加起来得到 7。当 i == 2 时创建 fork 进程 4 - 7,但它们自己不会 fork ,因为它们在 fork 之前就已经掉到循环底部(以及它们的父进程)在他们再次 fork 之前掉出底部)。

还请注意,进程proc2 - proc7 的标签不直接传达有关出身或创建顺序的信息;该表仅在 fork 时将每个标签与变量 i 的值相关联,并描述每个进程在启动时 fork 多少次作为其 i 值的函数运行。

关于c - 这段代码中创建了多少个进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28841888/

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