启动过程后,如何在孩子中获得父亲的PID?

Tea*_*IGD 6 python process

在Python中,我启动了一个新的进程Popen(),工作正常.现在,在子进程中,我想查找父进程的进程ID.

实现这一目标的最佳方法是什么,也许我可以通过Popen构造函数传递PID ,但是如何?或者有更好的方法吗?

PS:如果可能,我会优先使用标准库来解决问题.

Bak*_*riu 13

你可以使用os.getppid():

os.getppid()

Return the parent’s process id.
Run Code Online (Sandbox Code Playgroud)

注意:这仅适用于Unix,而不适用于Windows.在Windows上,您可以os.getpid()在父进程中使用,并将pid作为参数传递给您开始的进程Popen.

  • @Dull Bananas 编辑其他人的答案时要小心。为什么在将我的答案“更新”到 python3 时删除了它的重要部分?您删除了有关如何在 python<3.2 中处理 Windows 情况的信息,这可能仍然与很多人相关。更新答案时,仅考虑在末尾“添加”一段,说明何时/如何/更改了什么,不要删除已有的内容,最多指定在软件的特定版本中这是正确的。 (2认同)

Mar*_*ell 7

使用psutil(这里)

import psutil, os
psutil.Process(os.getpid()).ppid()
Run Code Online (Sandbox Code Playgroud)

适用于Unix和Windows(即使os.getppid()在此平台上不存在)