fork() 然后在Perl中等待一个孩子死去:
#!/usr/bin/perl use strict; use warnings; if (fork() == 0) { exit(1); } waitpid(-1,0); print $?;
$ perl test.pl 256
我怀疑的价值观正在向上转移,因为当我这样做 exit(2) 在子对象中,输出变为 512 .
exit(2)
512
我似乎找不到在perl的 waitpid . 这是我系统上的错误还是我做错了什么?
文件上有记载 $? 剖面图 perlvar 手册页。
$?
i、 e.真正的退出代码是 $? >> 8
$? >> 8
孩子可能连打电话都没有 exit . 像这样的, $? 打包的信息不仅仅是
exit
if ( $? == -1 ) { die "Can't launch child: $!\n"; } elsif ( $? & 0x7F ) { die "Child killed by signal ".( $? & 0x7F )."\n"; } elsif ( $? >> 8 ) { die "Child exited with error ".( $? >> 8 )."\n"; } else { print "Child executed successfully\n"; }
system