【发布时间】:2016-12-09 15:49:57
【问题描述】:
我正在调试一段看起来像这样的代码:
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.kill 会杀死fork,但不会杀死用exec 启动的进程。
如何杀死 fork 和 exec 进程?
【问题讨论】:
-
fork 进程与
execed 进程相同(它们具有相同的 pid),您不能只杀死其中一个。您的 bash 命令是否启动了其他进程? -
是的,在我的情况下,bash 命令在前台启动
solr -
尝试将 exec 命令更改为睡眠之类的命令,可能您的 bash 命令忽略了一些信号。
标签: ruby