Thread fork() unter mod_perl (3 answers)
Opened by pq at 2008-05-05 17:36

pq
 2008-05-05 21:06
#109223 #109223
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
@betterworld: ich dachte, man setzt $SIG{CHLD}, damit es beim fork beachtet wird.
wenn es erst dann beachtet wird, wennder prozess zurückkommt, ist ja ein local()
völlig sinnlos bei fork.
aber ich frage mich, wieso es dann in der kommandozeile klappt...
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
local $SIG{CHLD} = "IGNORE";
if (my $pid = fork) {
}
else {
print "child ($$)";
# mach was aufwaendiges
close STDOUT;
close STDERR;
close STDIN;sleep 3;
CORE::exit;
}
}
sleep 420;

der kindprozess ist hier auch erst fertig, wenn der äussere block schon verlassen ist.
trotzdem gibts keinen zombie.

edit: muss mich korrigieren, so kriegt man doch einen zombie. hab ihn wohl nicht entdeckt.
ok, dann ist es zumindest konsistent.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread fork() unter mod_perl