Próbuję napisać krótki skrypt w pythonie, który uruchomi inny kod Pythona w podprocesie, jeśli nie jest jeszcze uruchomiony, inaczej zakończ terminal & aplikacji (Linux).Jak zakończyć proces z Python za pomocą pid?
Tak to wygląda:
#!/usr/bin/python
from subprocess import Popen
text_file = open(".proc", "rb")
dat = text_file.read()
text_file.close()
def do(dat):
text_file = open(".proc", "w")
p = None
if dat == "x" :
p = Popen('python StripCore.py', shell=True)
text_file.write(str(p.pid))
else :
text_file.write("x")
p = # Assign process by pid/pid from int(dat)
p.terminate()
text_file.close()
do(dat)
Masz problem braku wiedzy, aby wymienić przeróbki przez PID która aplikacja odczytuje z pliku ".proc". Innym problemem jest to, że interpreter mówi, że ciąg o nazwie dat nie jest równy "x" ??? Co przegapiłem?
Dlaczego przekazujesz 'shell = True'? AFAIK nie jest potrzebny w twoim przypadku użycia. Zauważ również, że przy użyciu 'shell = True' pid zwrócony przez' p.pid' jest * nie * pid procesu Pythona, ale pid powłoki spawned do wykonania tego procesu. – Bakuriu
+1 za komentarz, ale uważam to za stosowne, ponieważ muszę również zamknąć terminal. – Alex