3

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

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

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

我希望在不必过多依赖底层操作系统的情况下做到这一点,但无论如何都行得通。

4

3 回答 3

6

脱壳:

1.9.3p429 :001 > `ps -p 7544 -o ppid=`.strip
 => "7540"
于 2013-07-17T03:24:11.840 回答
4

Process.ppid返回父进程 ID。 http://ruby-doc.org/core-2.4.1/Process.html#method-c-ppid

于 2017-09-14T15:51:07.280 回答
2

你可以在一个变量中记住它:

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
于 2013-07-17T07:39:29.110 回答