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?
Perl exit | How does exit Function work in Perl with example? Perl exit work assesses the articulation passed to it and ways out from the Perl mediator while restoring the incentive as the leave esteem. The exit () work doesn’t generally exit quickly yet calls the end schedules before it ends the program.
The ordinary method to run a Perl program is by making it legitimately executable, or, in all likelihood, by passing the name of the source document as a contention on the order line. Determined line by line by means of – e or – E turns on the order line.
The exit () function does not always exit immediately but calls the end routines before it terminates the program. If no expression is passed to the exit function then a default value 0 is returned.
It's documented in the $?
section of the perlvar man page.
i.e. the real exit code is $? >> 8
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With