Warum ist Perl $? Rücksendung der falsche Wert für den Rückgabewert von fork-Prozess?
Betrachten Sie dieses einfache Beispiel fork()ing dann zu warten, dass ein Kind sterben in Perl:
#!/usr/bin/perl
use strict;
use warnings;
if (fork() == 0) {
exit(1);
}
waitpid(-1,0);
print $?;
Dem das Skript läuft auf Solaris 10-bekomme ich dieses Ergebnis:
$ perl test.pl
256
Ich vermute, die Werte sind nach oben verschoben, wenn ich denn tun exit(2)
im Kind, der Ausgang wird 512
.
Ich kann nicht scheinen, um die zu finden, dokumentiert in perl -waitpid. Ist das ein Fehler auf meinem system oder mache ich etwas falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist dokumentiert in der
$?
Abschnitt der perlvar man-Seite.d.h. die exit-code
$? >> 8
.Das Kind vielleicht gar nicht bekommen haben, rufen
exit
. Als solche$?
packs mehr Informationen als nur dieexit
parameter.Dies ist dokumentiert deutlicher in
system
's Dokumentation.