在Ruby中获取系统调用的PID

时间:2015-03-06 00:48:38

标签: ruby

所以基本上我要做的就是在ruby中进行系统调用,找出新进程的PID。我试图通过我的系统调用执行另一个程序,但正在执行的程序永远不会完成所以我需要最终使用pid杀死它。

我一直无法弄清楚如何做到这一点。到目前为止,我已经查看了system(),如果程序执行成功,则返回true / false,这是无用的。我试图分叉它,但这也行不通,因为它返回fork的PID而不是系统调用。

非常感谢任何帮助。

很抱歉,如果在我找不到这个问题之前已经提出过这个问题。

2 个答案:

答案 0 :(得分:5)

如果你使用Process.spawn,你将产生一个进程,并获得它的PID,而不必等待它完成。

See the docs了解更多信息和资源限制,这可能是实现目标的另一种方法。

答案 1 :(得分:2)

您无法获得系统调用的PID。您可以获取Ruby父级的PID,然后查找该进程的子级,并以此方式查找。 sys-proctable gem对此非常方便。

然而,最简单的方法是让进程本身报告其PID(例如,通过将其写入预定的文件中)。