gpt4 book ai didi

c - Linux中的进程fork

转载 作者:行者123 更新时间:2023-11-30 18:24:15 28 4
gpt4 key购买 nike

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>

int main(){
pid_t pid;
int num_coconuts = 17;
pid = fork();

if(pid == 0) {
num_coconuts = 42;
exit(0);
} else {
wait(NULL); }
}

printf("I see %d coconuts!\n", num_coconuts);
exit(0);
}

结果是“我看到 17 个椰子”。为什么当 pid == 0 时 num_coconuts 没有改变?

最佳答案

让我们观察一下您的代码做了什么:

  1. 您设置num_coconuts = 17
  2. 您 fork 并获得一个新进程。
  3. 检查进程是否是子进程 (pid == 0) 还是父进程 (pid != 0)。
  4. 在子进程中,您设置了num_coconuts = 42,但随后立即退出。
  5. 您打印num_coconuts

如您所见,您的子进程永远无法达到 5。因为您在第 4 步中退出。删除 exit(),您将获得两个椰子。

关于c - Linux中的进程fork,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43167468/

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