我在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)
答案 0 :(得分:2)
它没有按预期工作的原因是杀手是在执行开始之前交付的。在发送kill之前引入一点睡眠可确保程序按预期运行。