QProcess на свободе - PullRequest
       32

QProcess на свободе

1 голос
/ 31 мая 2011

Я создал две программы 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 Ответ

1 голос
/ 31 мая 2011

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

...