Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我的程序没有';当我多次使用fork()时,请不要停止_C_Ubuntu_Fork - Fatal编程技术网

C 我的程序没有';当我多次使用fork()时,请不要停止

C 我的程序没有';当我多次使用fork()时,请不要停止,c,ubuntu,fork,C,Ubuntu,Fork,我试图在我的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); } #包括 #包括 #包括 #包

我试图在我的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);
}
#包括
#包括
#包括
#包括
#包括
int main()
{
fork();
fork();
fork();
printf(“hello\n”);
出口(0);
}
当我两次调用fork()运行上述代码时,我得到四个“Hello”作为 预期。然而,当我运行上面的代码时,程序只是循环,从不停止 返回。(顺便说一句,它确实打印了两个“Hello”)

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


我提前表示感谢。

我对您的代码做了一些修改,在其中加入了
pid
,只是为了打印正在发生的事情。在您的系统中执行此命令,您将能够了解。
三个叉后,“你好”应该打印8次(我想你在问题中错误地提到了两次)


任何地方都没有循环,你的第一句话与你在偏执论中所写的相矛盾。。。你到底在问什么?我想他是说程序在编译和运行时不会终止(从不退出,从不停止);在陷入这种状态之前,它会打印两次。“这是为什么?”这是一个问题。这就是说,当我编译并运行代码时,我得到了8个“hello”(程序终止)。在
strace-f
下运行您的程序以跟踪所有分叉。抱歉,Felix。塔纳托斯说的正是我想说的
#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]