QProcess на свободе

Я создал две программы A и B. B разработан как 32-битный QProcess, запущенный в 64-битном A. Эти программы прекрасно взаимодействуют через stdin, stdout и QSharedMemory.

A:A() {
 QProcess *p = new QProcess(this);  
 p->start("B.exe");
}
A:~A() {
 p->deleteLater();
}

Теперь, если A закрыт, B также будет отключен. Тем не менее, если я в диспетчере задач Windows завершу процесс A, B останется на свободе, и использование B процессором будет на высоте. Зачем?

Как я могу закрыть B, если A немедленно уничтожен?

1 ответ

Решение

Пробовать close() (или же kill()) другой процесс из вашего DTOR и сделать сырье delete p после этого. У меня была похожая проблема при использовании объекта QextSerialPort, который также имел тенденцию оставаться призраком при удалении с помощью deleteLater(), однако быстро упаковывался и оставлялся при немедленном удалении.

Другие вопросы по тегам