前提
Pythonのsubprocessで実行ファイルに時間制限をつけて実行していた.
一覧からなぜかプロセスが消えないため調査した.
発生した環境
import subprocess
import time
p=subprocess.Popen('a.exe args',shell=True)
time.sleep(5)
p.kill()
プロセスが生き続けているため,無限ループの場合ずっと生きていることになる
UNIX環境の場合は親のPythonが終了すると子となっているプロセスも落ちるようだ.
解決方法
- p=subprocess.Popen('a.exe args',shell=True)
+ p=subprocess.Popen(['a.exe', 'args'],shell=False)
シェルモードをFalseにする.
参考