Подтвердить что ты не робот

Убийство процесса, созданного подпроцессом Python.Popen()

Вот моя мысль:

Прежде всего, я создал процесс, используя subprocess.Popen

Во-вторых, через некоторое время я попытался убить его Popen.kill()

import subprocess
import os, signal
import time

proc1 = subprocess.Popen("kvm -hda /path/xp.img", shell = True)
time.sleep(2.0)
print 'proc1 = ', proc1.pid
subprocess.Popen.kill(proc1)

Однако "proc1" все еще существует после Popen.kill(). Могут ли какие-либо эксперты сказать мне, как решить эту проблему? Я ценю ваши соображения.

Благодаря комментариям всех экспертов, я сделал все, что вы рекомендовали, но результат все равно остается тем же.

proc1.kill() #it sill cannot kill the proc1

os.kill(proc1.pid, signal.SIGKILL) # either cannot kill the proc1

Спасибо, все равно.

И я все еще жду вашего драгоценного опыта по решению этой деликатной проблемы.

4b9b3361

Ответ 1

В вашем коде это должно быть

proc1.kill()

И kill или terminate являются методами объекта Popen который отправляет сигнал signal.SIGKILL процессу.

Ответ 2

process.terminate() не работает при использовании shell=True. Этот ответ поможет вам.

Ответ 3

Используйте только метод убийства Popen

process = subprocess.Popen(
    task.getExecutable(), 
    stdout=subprocess.PIPE, 
    stderr=subprocess.PIPE, 
    shell=True
)
process.kill()