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

时间:2016-12-09 15:49:57

标签: ruby

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

    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进程?

1 个答案:

答案 0 :(得分:0)

您正在向可能阻止TERM的进程发送TERM信号。如果你用简单的东西替换它,比如睡觉'你会看到它可以被终止。