Thread Returncode geforkter Prozesse verabeiten (2 answers)
Opened by robiwan at 2009-07-21 17:06

robiwan
 2009-07-21 17:06
#123444 #123444
User since
2009-05-29
2 Artikel
BenutzerIn
[default_avatar]
Hallo Freunde,

So starte ich derzeit eine ganze Reihe von Unterprozessen mit fork und habe mich bisher um die Returncodes der Unterprogramme nie gekümmert.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/perl

use WWW::Mechanize;

open (FILE,"/tmp/ip-listing.txt")
while(<FILE>)
{
chomp;
$SIG{CHLD} = 'IGNORE'; # Zombies verhindern
my $pid = fork();
if ($pid == 0)
{
&UNTER ($_);
exit;
}

}
close (FILE);

sub UNTER
{
$ip = shift;
my $browser = WWW::Mechanize->new( autocheck => 1, timeout => 5 );
$browser->get( "http://$ip/index.html" );
}


Jetzt würde ich gerne im Hauptprogramm den Returncode des Unterprogrammes verarbeiten, falls ungleich 0. In meinem Fall ist der Returncode 113, wenn der Timout zuschlägt.

Meine Frage lautet also:
Wie muss der der Code aussehen, damit bei einem Returncode eines Unterprogrammes ungleich Null, beispielsweise ein "Prozess $pid hatte Returncode $ret" oder so ausgegeben wird?
Mein Hauptprogramm soll nicht auf Kindprozesse warten müssen.

PS.:
Offen gestanden habe ich die zahlreichen Dokus im Internet oder auch im Perl Kochbuch mit $SIG{CHLD} = \&REAPER und so einfach nicht kapiert :-(

Gruss Robert

View full thread Returncode geforkter Prozesse verabeiten