次のコードは、終了するのに1秒かかるプロセスを開始し、その後、そのプロセスが終了するのを待ってから終了します。何らかの理由で、p->waitForFinished()
プロセスが終了したにもかかわらず、次のコードがハングします。
#include <QtCore/QProcess>
class A
{
public:
A():
p(0)
{
}
~A()
{
p->waitForFinished();
delete p;
}
void start()
{
p = new QProcess(0);
p->start("sleep 1");
}
QProcess *p;
};
int main(void)
{
static A a;
a.start();
return 0;
}
ただし、a
静的に宣言されていない場合は、次のようになります。
A a;
waitForFinished()
呼び出しは成功します。これはQtのバグですか、それとも予想される動作ですか?私の疑惑は、アプリケーションが正常に終了したかどうかを検出するために必要なある種のロジックが、のデストラクタA
が呼び出されるとすでに破棄されていることです。