Получение родительского идентификатора данного процесса в 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