J'essaye d'écrire un serveur python simple qui s'exécute et tue un autre script python. Le problème que j'ai est que la commande kill est émise sans erreur mais ne tue pas le processus. J'ai essayé manuellement avec 'kill -INT pid' sans aucun résultat.Emission de kill via le sous-processus
La commande fonctionne en shell mais pas en python. Je fais un 'soft' kill car le script contrôle une lumière et un 'kill -9' n'éteint pas la lumière.
REMARQUE: le script est en cours d'exécution sur 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()
La sortie de '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
Vous devez vérifier la sortie brute de 'ps' pour vous assurer qu'elle répertorie réellement le processus demandé et utiliser [' os.kill'] (https://docs.python.org/2/library/os .html # os.kill) pour terminer le processus plutôt que d'engendrer un autre processus. – Petesh