2012-07-03 79 views
1

我在Ubuntu 12.04上使用Ruby 1.9.2-p180。我不明白爲什麼下面的代碼不起作用。預期的行爲是我應該在運行代碼時在屏幕上看到文本「TRAPPED」,程序應該終止。但是當我運行它時,ruby程序不會終止,並且屏幕上不會顯示任何信息。我錯過了什麼?TERM信號分叉進程不起作用

pid = fork do                 
    exec "trap 'echo TRAPPED' TERM; while :; do :; done"  
end                   
Process.kill("TERM", pid)              
Process.wait(pid) 
+2

問題已解決。之所以沒有如預期的那樣工作,是因爲殺害是在高管開始執行之前交付的。在交付殺戮之前引入一點睡眠可確保該程序的行爲如預期。 – Kowshik

+1

如果你解決了你的問題,回答你的問題。 – Linuxios

+0

完成!謝謝! :) – Kowshik

回答

2

它沒有按預期工作的原因是殺死是在exec開始之前交付的。在交付殺戮之前引入一點睡眠可確保該程序的行爲如預期。