1
如何將Ctrl-C處理或與子進程殺掉進程?我的代碼蟒蛇subprocess.Popen殺進程處理
示例(Python 2.7):
# --*-- coding: utf-8 --*--
import subprocess
import os
import signal
proc = subprocess.Popen(['ping localhost'],shell=True,stdout=subprocess.PIPE)
print proc.pid
a = raw_input()
os.killpg(proc.pid, signal.SIGTERM)
我看下過程,當我運行程序:
user 16078 0.0 0.0 4476 916 pts/6 S+ 14:41 0:00 /bin/sh -c ping localhost
user 16079 0.0 0.0 8628 1908 pts/6 S+ 14:41 0:00 ping localhost
程序輸出:
16078
的raw_input後:
Traceback (most recent call last):
File "subproc2.py", line 10, in <module>
os.killpg(proc.pid, signal.SIGTERM)
OSError: [Errno 3] No such process
我想殺死進程pid 16078和pid 16079.
我該怎麼做,以及程序中的錯誤?感謝幫助。
謝謝!錯誤消失,並且主進程「/ bin/sh -c ping localhost」被終止。但「ping本地主機」進程仍然存在。是否有可能殺死這兩個進程? –
您與我校的腳本將產生只有一個「平」的過程,並在程序結束時它就會被殺死。殺死所有的ping進程並再次檢查。 –
謝謝!代碼「os.killpg(os.getpid(),signal.SIGTERM)」爲我工作! –