【发布时间】:2016-03-20 21:57:32
【问题描述】:
我正在尝试编写一个简单的 python 服务器来运行并杀死另一个 python 脚本。我遇到的问题是 kill 命令发出时没有错误,但不会终止进程。我已经手动尝试了“kill -INT pid”,但没有任何结果。
该命令在 shell 中有效,但在 python 中无效。我正在执行“软”杀戮,因为脚本控制灯光,而“杀戮 -9”不会关闭灯光。
注意:脚本在 yocto-distr 上运行
import socket, subprocess
srv = socket.socket()
srv.bind(('', 1340))
srv.listen(3)
while 1:
connection, address = srv.accept()
data = int(connection.recv(1024))
if data == 0:
ps_id = subprocess.check_output('ps|grep python\ /home/root/python/backlight_mod.py', shell=True)
ps_id = ps_id.split(' ')[2]
subprocess.call('kill -INT ' + str(ps_id), shell=True)
print 'Terminated'
elif data == 1:
subprocess.call('python ~/python/backlight_mod.py &', shell=True)
connection.close()
'kill -l' 的输出:
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS RTMIN RTMIN+1 RTMIN+2 RTMIN+3 RTMIN+4 RTMIN+5 RTMIN+6 RTMIN+7 RTMIN+8 RTMIN+9 RTMIN+10 RTMIN+11 RTMIN+12 RTMIN+13 RTMIN+14 RTMIN+15 RTMAX-14 RTMAX-13 RTMAX-12 RTMAX-11 RTMAX-10 RTMAX-9 RTMAX-8 RTMAX-7 RTMAX-6 RTMAX-5 RTMAX-4 RTMAX-3 RTMAX-2 RTMAX-1 RTMAX
【问题讨论】:
-
您应该检查
ps的原始输出以确保它实际上列出了请求的进程,并使用os.kill来终止进程而不是生成另一个进程。
标签: shell subprocess kill