Forum Webscript.Ru

Программирование => Perl => Тема начата: mind4 от 23 Августа 2005, 19:13:18

Название: Как убить... процесс
Отправлено: mind4 от 23 Августа 2005, 19:13:18
Имеется простейшая программа (см. ниже). Согласно идее - создается процесс, печатает свой 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;
}