Thread alarm für kind
(8 answers)
Opened by freddy at 2009-08-24 14:09
ich hoffe dir ist klar, dass in deinem Code "child()" auch ausgeführt wird wenn "fork" fehlschlägt? (zu wenig Speicher, Keine PIDs mehr frei, was weiß ich.)
ich würde es so schreiben: Code (perl): (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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #!/usr/bin/env perl # Core Modules use strict; use warnings; use utf8; use open ':encoding(UTF-8)'; use open ':std'; # Alarm Handler $SIG{ALRM} = sub { print "Alarm vom Parent\n" }; # Fork erzeugen my $pid = fork(); # undefined bei Fehler if(!defined($pid)) { die "Fork schlug fehl ($!)\n"; } # Parent Prozess elsif ( $pid ) { parent(); } # Child Prozess else { child(); } exit; sub parent { alarm(3); wait(); } sub child { $SIG{ALRM} = sub { print "Alarm vom Child\n" }; alarm(5); sleep 10; } |