如何使用pexpect获取生成过程的pid?

时间:2015-09-09 09:00:22

标签: python pid pexpect

我正在使用pexpect生成 bash shell,然后使用sendline在bash shell中执行其他进程。

有没有办法获得衍生的bash shell的pid?
我怎样才能获得我在bash中开始的流程的pid?

2 个答案:

答案 0 :(得分:4)

如果您选中documentation of the spawn class,则会发现您可以使用pid属性获取生成流程的pid,所以

spawnedBash = pexpect.spawn('bash')
print(spawnedBash.pid)

应该打印您生成的进程的pid

答案 1 :(得分:1)

Manuel的答案实际上是不正确的。但这不是他的错,而是出于期待。

调用此python代码

child=pexpect.spawn("gdb")
child.pid

给我14470的pid值。但是,当我通过bash控制它时,我看到gdb的值为pid 14473。之所以可能发生这种情况,是因为pexpect调用了包装器并返回了包装器的pid,而不是实际的进程。