fork()を実行し、Perlで子が死ぬのを待つという簡単な例を考えてみましょう。
#!/usr/bin/perl
use strict;
use warnings;
if (fork() == 0) {
exit(1);
}
waitpid(-1,0);
print $?;
Solaris 10でスクリプトを実行すると、次の結果が得られます。
$ perl test.pl
256
exit(2)
子で行うと出力が。になるため、の値が上にシフトしているのではないかと思います512
。
私はこれがperlのwaitpidに文書化されているのを見つけることができないようです。これは私のシステムのバグですか、それとも何か間違ったことをしていますか?