Why is Perl's $? returning the wrong value for the exit code of a forked process?
问题 Consider this trivial example of fork()ing then waiting for a child to die in Perl: #!/usr/bin/perl use strict; use warnings; if (fork() == 0) { exit(1); } waitpid(-1,0); print $?; Running the script on Solaris 10 I get this result: $ perl test.pl 256 I suspect the values of are being shifted upwards because when I do exit(2) in the child, the output becomes 512 . I can't seem to find this documented in perl's waitpid. Is this a bug on my system or am I doing something wrong? 回答1: It's