4

サブプロセスpid( )の値がコマンドが返すPopen.pid値と異なるのはなぜですか?ps

psPython内(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よりも1または2多いですPopen.pid

4

1 に答える 1

5

コマンドはで実行されるため、shell=Trueサブプロセスによって返されるpidは、コマンドの実行に使用されたシェルプロセスのpidです。

于 2010-12-14T20:59:21.937 に答える