gpt4 book ai didi

c - 当我多次使用 fork() 时,我的程序不会停止

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

我正在尝试在我的 Ubuntu 机器上运行以下代码

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

int main()
{
fork();
fork();
fork();

printf("hello\n");

exit(0);
}

当我运行上面的代码并调用 fork() 两次时,我得到了四个“Hello”预期的。但是,当我运行上面的代码时,程序只是循环而从不返回。(顺便说一句,它确实打印了两个“Hello”)

为什么会发生这种情况,我该如何解决?

提前致谢。

最佳答案

我通过在其中包含 pid 对您的代码进行了一些修改,只是为了打印正在发生的事情。在您的系统中执行此操作,您将能够弄清楚。
三个 fork 之后,“hello”应该被打印 8 次(我想你在问题中提到了两次是错误的)。

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

int main()
{
pid_t pid1,pid2,pid3;
pid1 = fork();
pid2 = fork();
pid3 = fork();

printf("hello in [%u][%u][%u]\n",pid1,pid2,pid3);

exit(0);
}

我得到的输出如下:

[p@devmach PROG]$ ./a.out
hello in [30092][30093][30094]
[p@devmach PROG]$ hello in [30092][30093][0]
hello in [30092][0][30095]
hello in [0][30096][30097]
hello in [30092][0][0]
hello in [0][30096][0]
hello in [0][0][30098]
hello in [0][0][0]

关于c - 当我多次使用 fork() 时,我的程序不会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31577755/

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