???? 1? #!/bin/perl
???? 2? $return=fork;
???? 3? if ($return == 0){
???? 4? print "this is the child process;return value is $return.n";
???? 5? }
???? 6? elsif (defined $return){
???? 7? print "parent process:return pid is $return.n";
???? 8? }
???? 9? else {
??? 10? die "fork error:$!n";
??? 11? }
??? 12? print "from now no,everything will be outputed twice.n";
??? 13? print "research fork function.n"
?
[root@stationx perl]# perl f.pl
this is the child process;return value is 0.
from now no,everything will be outputed twice.
research fork function.
parent process:return pid is 4440.
from now no,everything will be outputed twice.
research fork function.
结论:首先,fork行数执行成功将返回值0赋值给return变量,然后从脚本中的第三行到脚本末尾都至于fork出来的子程序中,全部在fork出来的子程序中运行了一边。等fork出来的子程序执行结束后,将fork子程序的pid返回给父程序并将值赋给了return变量,然后从第3行到脚本末尾重新回到了父程序中进行执行。
以前对这个fork函数不是很了解,通过这个perl脚本有点了解fork函数了。