Thread Child-Überwachung bei Fork() (6 answers)
Opened by Gast at 2007-02-08 15:58

bloonix
 2007-02-09 01:54
#74183 #74183
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Hallo SiSo1984,

die Child-Prozesse sollten mit dem Parent Prozess kommunizieren.
Das kannst du auf verschiedene Weise realisieren. Vielleicht über
Dateien, besser aber über Sockets. Dann kannst du mit select()
alle paar Sekunden nachschauen, ob sich ein Child beendet hat und
musst nicht endlos warten.

Hier ein kleines Beispiel, wie sich Parent und Child unterhalten können:

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 Socket;
use IO::Handle;

my ($kidfh, $dadfh);
socketpair($kidfh, $dadfh, AF_UNIX, SOCK_STREAM, PF_UNSPEC)
or die "socketpair: $!";

$kidfh->autoflush(1);
$dadfh->autoflush(1);

if (my $pid = fork) {
close $dadfh;
print $kidfh "Parent Pid $$ sendet dies\n";
chomp(my $line = <$kidfh>);
print "Parent Pid $$ liest gerade dies: $line\n";
close $kidfh;
waitpid($pid,0);
} else {
close $kidfh;
chomp(my $line = <$dadfh>);
print "Child Pid $$ liest gerade dies: $line\n";
print $dadfh "Child Pid $$ sendet dies\n";
close $dadfh;
exit;
}


Gruss,
opi
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.

View full thread Child-Überwachung bei Fork()