Thread alarm für kind (8 answers)
Opened by freddy at 2009-08-24 14:09

topeg
 2009-08-25 10:57
#124733 #124733
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
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;
}

View full thread alarm für kind