Получение родительского идентификатора данного процесса в Ruby

Как получить идентификатор родительского процесса, который не является текущим процессом в Ruby?

Я проверил модуль Process в Ruby, но, похоже, он предоставляет только средства для доступа к PPID текущего процесса.

Я также проверил Google на предмет чего-либо на эту тему, но первые две страницы, казалось, содержали только ссылки, касающиеся того, как использовать вышеупомянутый модуль Process.

Я надеялся сделать это, не полагаясь на основную ОС, но все, что работает.

3 ответа

Решение

Вы можете просто запомнить это в переменной:

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

Раскошеливаться:

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

Process.ppid возвращает идентификатор родительского процесса. http://ruby-doc.org/core-2.4.1/Process.html

Другие вопросы по тегам