Leser: 34
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
if ($pid = fork){
#Hier ist der Parent prozeß
# Pid des Child steht in $pid
print "Parentprozess\n";
if (kill 0 => $pid)
{
print "child is alive...\n";
}
sleep 5;
if (kill 0 => $pid)
{
print "child is alive...\n";
}
else
{
print "child is dead...\n";
}
print "ende des ganzen\n";
}
elsif(defined $pid){ # $pid ist hier null falls definiert
# hier gibt es den child prozess
# pid des parent über getppid verfügbar
print "Kindprozess...\n";
sleep 2;
print "Verlasse jetzt Kindprozess\n";
}
Quotekill SIGNAL, LIST
Sends a signal to a list of processes. Returns the number of
processes successfully signaled (which is not necessarily the
same as the number actually killed).
2009-08-20T08:41:49 GwenDragonNein, er hat es nur merkwürdig geschrieben.
2009-08-20T08:57:53 GwenDragonDie Schreibweise Schlüssel => Wert bedeutet nichts weiter als ein zusammengehöriges Wertepaar. => ist der Hashoperator.
QuoteIch würde erwarten, dass ich das zweite mal die Ausgabe "child is dead..." bekomme, aber das gegenteil ist der Fall! Ich hoffe ihr könnt mir helfen!
local $SIG{CHLD} = 'IGNORE';
local $SIG{CHLD} = 'IGNORE';
2009-08-20T13:58:59 sid burnMöchtest du aber das Parent und Child sich Variablen teilen (sharen) dann musst du Threads nutzen.
2009-08-20T13:58:59 sid burnCoro habe ich selber noch nicht genutzt, werde ich aber definitiv auch mal bald genauer anschauen. Vorallem in verbindung mit AnyEvent: Coro::AnyEvent
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/perl
use Coro::LWP;
use Coro;
use Coro::AnyEvent;
use Coro::Timer qw(sleep timeout);
use LWP::Simple;
$|++;
my @pids;
for (1..1) {
push @pid, async {
print "starting to fetch http://www.google.de/\n";
get "http://www.google.de/";
print "fetched http://www.google.de/\n";
};
push @pid, async {
print "starting to fetch http://www.yahoo.com/\n";
get "http://www.yahoo.com/";
print "fetched http://www.yahoo.com/\n";
};
}
$_->join for @pid;