gpt4 book ai didi

c - wait(null) 在这种情况下做了什么,程序的输出是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 08:02:07 24 4
gpt4 key购买 nike

if (fork() == 0) {
printf("[Child] I'm exiting\n");
}

else {
wait(NULL);
printf("[Parent] child exited\n");

}

wait(NULL) 等待任何 child 完成,然后它会执行它之后的所有内容。那么在这种情况下,程序的输出是什么?

我们可能先进入父级,然后我们将不得不等待子级完成,所以它的 [Child] ..... , [Parent] .... 打印.

我们也可以进入子进程,打印它的东西,然后是父进程,在这种情况下 wait(NULL) 将永远等待,因为 child process 已经完成.那么在这种情况下,输出将只是 [Child].....

我运行了 1000 次,但看起来它的输出是 always child ... parent

谢谢

最佳答案

如果 child 还没有退出, parent 会一直等到它退出。

如果子进程已经退出,父进程会获取其状态信息,然后继续执行。在这种情况下,函数 wait() 将立即返回。 See this .

所以这个程序总是打印:

[Child] I'm exiting
[Parent] child exited

关于c - wait(null) 在这种情况下做了什么,程序的输出是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45666076/

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