一个关于fork进程的问题
很简单的一段代码:
#include <stdio.h>
int main(int argc , char **argv)
{
int i;
int pid;
for ( i = 0 ; i < 3; i++ )
{
if ( (pid = fork()) == 0 )
{
printf("# Parent : %d # Child : %d ## fork print is : %d\n" , getppid() ,
getpid() , i);
}
}
}
该程序编译运行后结果如下:
[sybase]/export/home/sybase/lrj/bin> fork_test
# Parent:9228 # Child:9229 ## fork print is : 0
# Parent:9228 # Child:9230 ## fork print is : 1
# Parent:9228 # Child:9231 ## fork print is : 2
[sybase]/export/home/sybase/lrj/bin> # Parent:9229 # Child:9232 ## fork print is
: 1
# Parent:9230 # Child:9233 ## fork print is : 2
# Parent:9229 # Child:9234 ## fork print is : 2
# Parent:9232 # Child:9235 ## fork print is : 2
(不出现命令行提示符,光标停在此处)
并且每次运行该程序结果不一样。
本人很想知道的是:这个程序(主要是fork()调用)的运行机制到底是怎样的,才会出现上述的结果?