Thread alarm für kind
(8 answers)
Opened by freddy at 2009-08-24 14:09
Ich glaube du stellst dir unter einem fork() immer noch das falsche vor. Nach dem aufruf von fork() hast du zwei komplett voneinander getrennte Prozesse. Das ist (fast) so als wenn du dein Programm zweimal startest, und natürlich kann jeder Prozess auch sein eigener Alarm Timer haben. Dafür muss man das auch nicht in einer Datei auslagern und mit require laden.
Hier mal ein Beispiel wo der Parent nach 3 sekunden etwas ausgiebt und der Child nach 5 Sekunden und sich dann beide Prozesse beenden. 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 #!/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" }; # Parent Prozess if ( my $pid = fork() ) { 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; } Last edited: 2009-08-25 09:54:08 +0200 (CEST) Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
|