Thread system()-Aufruf in einem Kindprozess eines Servers (6 answers)
Opened by MickiM2000 at 2007-04-19 17:01

MickiM2000
 2007-04-19 17:01
#37507 #37507
User since
2007-04-19
4 Artikel
BenutzerIn
[default_avatar]
Hallo,

zum Einsammeln der Zombies bei einem Server, der durch fork mehrere Kindprozesse erzeugt, benutze ich die sub REAPER. Nun möchte ich aber in den Kindprozessen auch externe Programme über system() starten und den Rückgabewert auswerten. Dies funktioniert aber nicht bei der Nutzung des REAPERS. Welche Lösung habt ihr dafür?

reduzierter Beispielcode:

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
26
27
use strict;
use warnings;
use POSIX;
use POSIX "sys_wait_h";

local $SIG{CHLD} = \&REAPER;

my $wert = system('ls');
print "Rueckgabe: $wert\n";

if ($wert == 0) {
print "Ok\n";
}
else {
print "Fehler\n";
}
exit 0;

sub REAPER {
my $sig = shift;
my $pid;
while (($pid = waitpid(-1, WNOHANG)) > 0) {
print "child $pid terminated - status $?\n";
print "sig: $sig\n";
}
$SIG{CHLD} = \&REAPER;
}


Gruß
MickiM2000

View full thread system()-Aufruf in einem Kindprozess eines Servers