我有一个C程序,其中包含了fork()调用。
#include <stdio.h>
#include <unistd.h>
main ( )
{
fork () ;
printf ( "\nHello" ) ;
fork () ;
printf ( "\nWorld" ) ;
}这是我对gcc的输出:
Hello Hello World World World World 应该是:
Hello Hello World World Hello Hello World World由于以下原因:
Line1: First fork creates a child process.
1.2: Prints 'Hello'
1.3:Creates a child process because of 2nd fork in it.
1.3.2:Prints 'Hello' and 'World'.
1.4:Prints 'World'.
Line2: Prints 'Hello'.
Line3: Second fork() creates child process
3.1:creates a child process
3.2: Prints 'Hello'
3.4: Prints 'World'
Line 4: Prints 'World'这就是我认为这个项目的运作方式。你能解释一下我哪里出错了吗。这就是为什么我想了解这个函数是如何工作的。
注意:我检查了手册页,但我不太明白。
这些数字也是主函数的行号。示例: 1.2对应于由main()的第1行叉()调用创建的子进程的第二行,等等。
我无法弄清楚它是如何产生特定输出的。因此,我想了解,在用简单的步骤调用fork ()时会发生什么?
发布于 2014-01-04 10:53:33
所以:
https://stackoverflow.com/questions/20919958
复制相似问题