为什么子进程 pid ( ) 与命令返回Popen.pid
的值不同?ps
ps
当从 python 内部(with subprocess.call()
)和另一个终端调用时,我注意到了这一点。
这是一个简单的python文件进行测试:
#!/usr/bin/python3
'''
Test subprocess termination
'''
import subprocess
command = 'cat'
#keep pipes so that cat doesn't complain
proc = subprocess.Popen(command,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
stdin=subprocess.PIPE,
shell=True)
print('pid = %d' % proc.pid)
subprocess.call("ps -A | grep -w %s" % command,
shell=True)
proc.terminate()
proc.wait() # make sure its dead before exiting pytyhon
通常 pid 报告的 pidps
比 报告的 pid 多 1 或 2 个Popen.pid
。