使用shell=True
傳遞給subprocess.Popen
的構造函數創建的kill子進程僅殺死shell而不是shell創建的進程(請參閱How to terminate a python subprocess launched with shell=True)。但是,在Windows Vista x64 SP3下運行python -c "import subprocess; subprocess.Popen(['ping', '-t', 'google.com'], shell=True).terminate()"
,並且Python 2.7.3 64位殺死了ping
進程。在Windows下subprocess.Popen.terminate()
callsTerminateProcess
。但documentation的這個功能狀態爲什麼Popen.terminate()在Windows上終止使用命令解釋程序(cmd.exe)運行子進程?
終止指定進程及其所有線程。
沒有提到關於終止整個進程樹。我錯過了什麼?
有趣的是,這種矛盾 –
cdarke
@cdarke有趣,確實。感謝您鏈接到該問題。在這個問題中,我詢問了有關版本或Python和Windows的問題。 –