Pythonのsubprocessを利用してtest.pyをmain.pyから起動します。
ここでtest.pyが無限ループする処理だとterminate()させてもプロセスが終了されず、Ctrl+C入力するまで実行されてしまうのですが何故でしょうか。
test.pyが無限ループ処理でも完全に終了させる方法はありますでしょうか。
python
1import time 2import subprocess 3 4proc=subprocess.Popen(['python','test.py'],shell=True) 5proc.poll() # プロセス起動 6 7print('start') 8time.sleep(10) 9proc.terminate() # 10秒後にプロセスを終了 10print('end')
python
1import time 2 3i = 1 4while True: 5 time.sleep(1) 6 print(str(i)) 7 i += 1
python
1実行結果 2--- 3>python main.py 4start 51 62 73 84 95 106 117 128 139 14end 15 16>10 1711 1812 1913 2014 2115 2216 2317 2418 2519 26 27 28>Traceback (most recent call last): 29 File "test.py", line 7, in <module> 30 time.sleep(1) 31KeyboardInterrupt

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/21 12:01