Thread Kinder immer woanders gezeugt (6 answers)
Opened by hugenyn at 2011-02-13 21:51

hugenyn
 2011-02-13 21:51
#145623 #145623
User since
2010-10-05
65 Artikel
BenutzerIn

user image
Guten Abend,

Code: (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
#!/usr/bin/perl

use 5.010;
use strict;
use warnings;

$|=1;

my $num=20; #oder eine beliebige andere Zahl
my @childs=();

for (1..$num) {
my $pid=fork();
die "Fehler: $!\n" unless(defined $pid);

if ($pid==0) { #kindprozess
print "Hier ist Kind Nr. $_\n";
sleep(5);
exit(0);
}
else {
push(@childs, $pid);
}
}
print "Alle Kinder gezeugt\n";

for (@childs) {
waitpid($_, 0);
print "Kind $_ gestorben\n";
}


Die Ausschrift "Alle Kinder gezeugt" erscheint bei jedem Aufruf des Programms in einer anderen Zeile der Ausgabe "Hier ist Kind..."

Im Buch - aus dem dieser Code stammt - steht, dies sei ein asynchrones Verhalten, wenn die Endemeldung des Elternprozesses vor dem letzten Kindprozess erscheint.

Warum ist das so.

View full thread Kinder immer woanders gezeugt