Имеется простейшая программа (см. ниже). Согласно идее - создается процесс, печатает свой pid, после чего сразу делает то что называется exit. После этого по идее операция kill(0, $pid) должна возвращать ложь. Кто объяснит мне почему возвращается not ложь?
#!/usr/bin/perl -w
use strict "vars";
my @processes;
$SIG{CHLD} = \'IGNORE\';
for (1..3)
{ if (not defined (my $pid = fork))
{ print "failed to fork\\n";
} elsif ($pid == 0)
{ # child
print "child pid: $$\\n";
exit;
} else
{ # parent
push @processes, $pid;
}
}
for (1..6)
{ print "$_: ".(kill 0, $_)."; " foreach @processes;
print "\\n";
sleep 1;
}