Leser: 26
2009-08-24T16:17:36 MatthiasWKönntest du bitte noch deine Lösung posten. Falls jemand danach sucht wäre es ziemlich hilfreich, wenn er eine Lösung finden würde ;)
MfG
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#!/usr/bin/perl -w alarm 20; my $pid; if ($pid = fork()) { # Vater exit (); # /Vater } else { # Sohn require "irgendeinscript.pl"; &test; exit (); # /Sohn }
1 2 3 4 5
alarm 3600; sub test { print "Da bin ich und werde erst nach 1 Stunde gewürgt\n"; } 1;
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; }
2009-08-25T07:51:57 sid burnIch glaube du stellst dir unter einem fork() immer noch das falsche vor. Nach dem aufruf von fork() hast du zwei komplett voneinander getrennte Prozesse.
2009-08-25T07:51:57 sid burnDafür muss man das auch nicht in einer Datei auslagern und mit require laden.
QuoteJa, ist mir bewußt und wollte ich auch so haben.
QuoteGilt dann das alarm des Vaters auch für das Kind
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; }
QuoteIch hoffe dir ist klar, dass in deinem Code "child()" auch ausgeführt wird wenn "fork" fehlschlägt?