【发布时间】:2016-05-27 17:08:30
【问题描述】:
我需要获取 真实 进程 ID IN the spawned child,如我的示例中父级所见。现在 os.getpgid(0) 只返回父进程 ID,因为它的继承是正确的。但是在父进程中,子进程 ID 是不同的。这只是一个简单的例子,但我将在另一个程序中实现它:
#!/usr/bin/python3
import os
mypid = os.getpgid(0)
print ("My pid is %s" % mypid)
childpid = os.spawnv(os.P_NOWAIT, "./spawn2.py", ["foo", "bar"])
print ("I forked to spawn2 with pid %s" % childpid)
#!/usr/bin/python3
import os
pid = os.getpgid(0)
print ("I'm spawn2")
print ("My pid is %s" % pid)
输出看起来像这样,但我希望生成的孩子说它的 pid 是 1658:
pi@oriondev1:~/git-repos/zguide/examples/Python $ ./spawn1.py
My pid is 1657
I forked to spawn2 with pid 1658
pi@oriondev1:~/git-repos/zguide/examples/Python $ I'm spawn2
My pid is 1657
【问题讨论】:
-
你是否故意使用 getpgid()?
-
不,我只知道。我已经怀疑可能还有其他我想要使用的东西,但我还没有找到它。你是在暗示还有别的吗?我会再次检查操作系统文档,也许我错过了。