1

2つのプログラム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タスクマネージャーのIがプロセスAを終了した場合、Bは緩い状態を維持し、BのCPU使用率は屋根を通り抜けます。なんで?

Aがすぐに破壊された場合、どうすればBをシャットダウンできますか?

4

1 に答える 1

1

DTOR から他のプロセスをclose()(または)試してから、raw を実行します。QextSerialPort オブジェクトを使用すると、deleteLater() で削除するとゴーストとして残る傾向がありましたが、すぐに削除するとすぐにパックされて残りました。kill()delete p

于 2011-05-31T12:57:08.183 に答える