Как правильно выйти из QProcess с помощью Ctrl + C? - PullRequest
0 голосов
/ 12 марта 2020

Я запускаю событие QProcess, которое завершается при нажатии Ctrl + C непосредственно в cmd. Как я могу отправить сигнал от python, чтобы завершить процесс чисто? Я попытался kill (), который не позволяет программе сохранить соответственно. Также terminate () не отвечает. Я надеюсь, что вы можете помочь.

    self.btn_1 = QPushButton('Start')
    self.btn_1.clicked.connect(self.start)

    self.btn_2 = QPushButton('Stop')
    self.btn_1.clicked.connect(self.stop)

    self.process = QProcess()

def start(self):
    self.process.start("C:\path\program.exe")

def stop(self):
    print('Stop the process!')

1 Ответ

1 голос
/ 12 марта 2020

Вам необходимо получить PID процесса, затем вы можете отправить сигнал через os.kill:

import os
import signal 

os.kill(<pid>, signal.SIGINT) #SIGINT is CTRL-C

PID из объекта QProcess вы получите с помощью:

pid = self.process.processId()

РЕДАКТИРОВАТЬ : на Windows, заменить SIGINT на CTRL_C_EVENT

...