Bha*_*Yes 1 c gcc fork parent-child
我有一个带有fork()调用的C程序.
#include <stdio.h>
#include <unistd.h>
main ( )
{
fork () ;
printf ( "\nHello" ) ;
fork () ;
printf ( "\nWorld" ) ;
}
Run Code Online (Sandbox Code Playgroud)
这是我在gcc上得到的输出:
Hello Hello World World World World
Run Code Online (Sandbox Code Playgroud)
不应该是:
Hello Hello World World Hello Hello World World
Run Code Online (Sandbox Code Playgroud)
由于以下原因:
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'
Run Code Online (Sandbox Code Playgroud)
这就是我认为这个程序可行的方式.你能解释我哪里出错了吗?这就是为什么我想了解该功能的工作原理.
注意:我检查了手册页,但我不太了解它.
数字也是主要功能的行号.例程:1.2对应于由main()的第1行fork()调用创建的子进程的第二行,依此类推.
我无法弄清楚它是如何产生特定输出的.所以我想明白,fork()中发生的事情是在简单的步骤中调用的吗?
tab*_*top 10
所以: