终止ruby fork不会终止底层进程

我正在调试一段看起来像这样的代码:

pid = fork do STDERR.reopen("/dev/null") STDOUT.reopen("/dev/null") exec('some bash command that runs in the foreground') end at_exit do Process.kill("TERM", pid) Process.wait pid end 

问题是Process.killProcess.kill fork而不是使用exec启动的进程。

如何杀死fork和exec进程?

您正在向可能阻止TERM的进程发送TERM信号。 如果用简单的“睡眠”替换它,你会发现它可以被终止。