TERM信号到分叉进程不起作用

时间:2012-07-03 18:15:05

标签: ruby process

我在Ubuntu 12.04上使用Ruby 1.9.2-p180。我不明白为什么以下代码不起作用。预期的行为是,当我运行代码时,我应该在屏幕上看到文本:“TRAPPED”,程序应该终止。但是当我运行它并且屏幕上没有打印任何内容时,ruby程序不会终止。我错过了什么?

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

1 个答案:

答案 0 :(得分:2)

它没有按预期工作的原因是杀手是在执行开始之前交付的。在发送kill之前引入一点睡眠可确保程序按预期运行。