2014-01-23 28 views
0
my $pid = fork(); 
if ($pid) 
{ 
    sleep 5; 
    waitpid($pid,0); 
} 
if ($pid == 0) 
{ 
    sub1(); 
    exit 0; 
} 
else 
{ 
    exit; 
} 

我只是需要澄清一下這段代碼是否沒有bug!perl fork和查殺超時後的小孩

我需要保持父進程並創建異步子進程24x7,一旦孩子完成執行,它應該被終止,而不用等待父進程終止。

+0

它甚至沒有嘗試殺生,對於初學者... – ikegami

+0

你的代碼不會產生一個小孩和父母做的等待爲子進程終止。 – sateesh

+0

對不起,0號出口必須終止孩子。那就是我的意思 – gzix

回答

1

您的代碼將做到以下幾點:

  1. 叉一個孩子。
  2. 父母睡了5秒,然後阻止在waitpid等待孩子退出。
  3. 同時,孩子運行sub1(),然後終止於exit 0。孩子不關心或等待父母。
  4. 當孩子已經退出,父延續到else部分和終止:exit