Başka bir python komut dosyasını çalıştıran ve çalıştıran basit bir python sunucusu yazmaya çalışıyorum. Benim sahip olduğum problem, kill komutunun hatasız yayınlanması, ancak işlemi durdurmamasıdır. Herhangi bir sonuç olmadan 'kill -INT pid' ile manuel olarak denedim.Subprocess üzerinden öldürme yayımlama
Komut, kabukta değil, python'da çalışır. 'Yumuşak' bir öldürme yapıyorum çünkü senaryo bir ışığı kontrol ediyor ve 'kill -9' ışığı kapatmıyor.
NOT: komut yocto-Distr çalışıyorsa
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 çıktısı: böylece kod olur @Petesh önerdiği gibi
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
İstenen işlemi gerçekten listelediğinden ve ['os.kill'] (https://docs.python.org/2/library/os) kullandığından emin olmak için' ps''nin ham çıktısını kontrol etmelisiniz. .html # os.kill) işlemi başka bir süreç oluşturmaktan ziyade sona erdirmek için. – Petesh