Когда я бегуПочему не fork() не дает правильный pid сразу?
#!/usr/bin/perl
my $pid;
if ($pid = fork) {
system("sleep 100");
}
print "pid $pid\n";
тогда я получаю
pid 0
и когда он выходит
pid 17613
В то время как он работает, я могу видеть, дочерний процесс идентификаторами
jasl 17612 17036 0 14:05 pts/2 00:00:00 /usr/bin/perl ./fork.pl
jasl 17613 17612 0 14:05 pts/2 00:00:00 [fork.pl] <defunct>
jasl 17614 17612 0 14:05 pts/2 00:00:00 sleep 100
Вопрос
Почему я получаю pid 0
(вилка успеха), а затем, когда он выходит правильный pid 17613
? Как будто линия print
выполняется дважды?
Есть ли способ получить PID команды sleep из скрипта perl?
'if ($ pid = fork)' –