Thread fork führt zu falschem return code (5 answers)
Opened by TobEx at 2011-11-28 16:14

Gast TobEx
 2011-11-28 16:14
#154514 #154514
Hallo Experten,

ich hoffe ich treffe mit meiner Frage auf lächelnde und wissende Gesichter.

Mein kleines Beispiel-Programm läßt es nicht zu, den Return-Code des Systemaufrufs zu prüfen.

Das folgende Script ist reduziert auf das Problem.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/perl

sub sigchldHandler {
wait() ;
}
$SIG{CHLD} = \&sigchldHandler ;


my $pid = fork();
if ( $pid == 0 ) {
$Result=`ls -l`;
print "ReturnCode = $? \n";
}


Das Ergebnis ist immer "ReturnCode = -1"

Erwarten würde ich eine "0" bzw eine "2" wenn das Kommando in einen Fehler läuft.



Ich befinde mich auf einem Solaris 10 Server mit Perl 5.8.4



Nochmal kurz beschrieben: Ich möchte in einem wesentlich größeren Programm mehrere parallele Systemaufrufe starten.

Das funktioniert wunderbar, nur leider kann ich nicht mit Hilfe des Return-Codes abfragen wie sich das Kommando beendet hat.
Meine Suche durchs WWW hat da leider garnichts ergeben.

Ich bitte höflichst um eure Unterstützung. Vielen Dank :-)

Gruß

Tobias
Last edited: 2011-11-28 16:29:41 +0100 (CET)

View full thread fork führt zu falschem return code