1

我创建了两个程序 A 和 B。B 被设计为在 64 位 A 内启动的 32 位 QProcess。这些程序通过 stdin、stdout 和 QSharedMemory 很好地通信。

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

现在,如果 A 关闭,B 也将关闭。但是,如果我在 Windows 任务管理器中结束进程 A,B 将继续逍遥法外,B 的 cpu 使用率将飙升。为什么?

如果 A 立即被销毁,我该如何关闭 B?

4

1 回答 1

1

尝试close()(或kill())您的 DTOR 中的其他过程,然后执行原始操作delete p。我在使用 QextSerialPort 对象时遇到了类似的问题,该对象在使用 deleteLater() 删除时也倾向于像幽灵一样留下来,但是在立即删除时会立即打包并离开。

于 2011-05-31T12:57:08.183 回答