私の考えは次のとおりです。
まず、subprocess.Popenを使用してプロセスを作成しました
第二に、一定の時間の後、私はPopen.kill()によってそれを殺そうとしました。
_import subprocess
import os, signal
import time
proc1 = subprocess.Popen("kvm -hda /path/xp.img", Shell = True)
time.sleep(2.0)
print 'proc1 = ', proc1.pid
subprocess.Popen.kill(proc1)
_
ただし、Popen.kill()の後も「proc1」が存在します。この問題を解決する方法を専門家に教えてもらえますか?ご検討いただきありがとうございます。
すべての専門家からのコメントのおかげで、私はあなたが推薦したすべてをしましたが、結果は同じままです。
proc1.kill() #it sill cannot kill the proc1
_os.kill(proc1.pid, signal.SIGKILL) # either cannot kill the proc1
_
みんなありがとう。
そして、この繊細な問題を解決する貴重な経験を待っています。
あなたのコードでは
proc1.kill()
kill
またはterminate
は両方とも、信号を送信するPopen
オブジェクトのメソッドですsignal.SIGKILL
プロセスに。
Shell=True
を使用している場合、process.terminate()は機能しません。これは answer に役立ちます。
Popen
killメソッドのみを使用します
process = subprocess.Popen(
task.getExecutable(),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
Shell=True
)
process.kill()
Os.killを使用してはどうですか?こちらのドキュメントをご覧ください。 http://docs.python.org/library/os.html#os.kill