gpt4 book ai didi

c - fork() exit(0) 和 wait(NULL) 是如何工作的?

转载 作者:行者123 更新时间:2023-12-04 00:55:31 26 4
gpt4 key购买 nike

我想知道这段代码是如何工作的

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

int main()
{
pid_t cpid;
if (fork()== 0)
exit(0);
else
cpid = wait(NULL);
printf("Parent pid = %d\n", getpid());
printf("Child pid = %d\n", cpid);

return 0;

(fork()==0) 如果我们在子进程中,则返回 true。对吧?

然后 exit(0) 将终止子进程。

如果我们不能进入 else 情况,除非我们在父进程中,否则 wait(NULL) 将如何返回子 pid?

最佳答案

fork 函数创建一个新进程并返回两次:一次给父进程,一次给子进程。

在子进程中,fork 返回 0,因此 if 部分运行并调用 exit。在父进程中,fork 返回子进程的 pid,因此它进入 else 部分,在那里它调用 wait,一旦 child 退出。

关于c - fork() exit(0) 和 wait(NULL) 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62787734/

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