在Ruby中获取给定进程的父ID

时间:2013-07-17 03:00:39

标签: ruby process process-management

如何获取不是Ruby中当前进程的进程的父进程ID?

我已经检查了Ruby的Process模块​​,但它似乎只提供了一种访问当前进程的PPID的方法。

我还检查了谷歌有关该主题的任何内容,但前两页似乎只包含有关如何使用上述过程模块的链接。

我希望这样做而不必过多依赖底层操作系统,但无论如何都有效。

3 个答案:

答案 0 :(得分:3)

外壳:

1.9.3p429 :001 > `ps -p 7544 -o ppid=`.strip
 => "7540"

答案 1 :(得分:3)

答案 2 :(得分:1)

您可以在变量中记住它:

parent_pid = Process.pid

Process.fork do
  child_pid = Process.pid
  puts parent_pid, child_pid
  # do stuff
  exit
end

Process.wait

# 94791
# 94798

或者,如果您需要有关父进程级别的信息:

parent_pid = Process.pid

child_pid = Process.fork do
  # do stuff
  exit
end

Process.wait
puts parent_pid, child_pid

# 6361
# 6362