2013-11-28 3 views
3

Я нашел несколько методов, чтобы убить дочерний процесс. Я хотел бы использовать os.kill (pid). Но это не работает, я думаю, это должно быть.Как убить дочерний процесс

def onExit(): 
    os.kill(logProc, 0) 
    QtCore.QCoreApplication.instance().quit 
    return 

button.clicked.connect(onExit) 

logProc=os.fork() 
if logProc>0: 
    proc() 
+0

'os.kill' не убивает процесс, он просто передает указанный сигнал процессу (да, это запутывает). –

ответ

3

Вы должны передавать сигналы, как signal.SIGKILL (9), signal.SIGTERM (15), чтобы убить процесс.

import signal 

... 

os.kill(logProc, signal.SIGKILL) 

Согласно Linux kill(2):

sig Если это 0, то сигнал не посылается, но проверка ошибок по-прежнему выполняется; это можно использовать для проверки наличия идентификатора или идентификатора группы процессов.

Смежные вопросы