1

アプリでプロセスを作成するために Poco を使用しています。プロセスが正常に終了するか、クラッシュした場合は、プロセスを再起動したいと思います。

現在、次のように開始されています。

ProcessHandle ph = Process::launch( "foo.exe", args, 0, &outPipe, 0);
PipeInputStream istr(outPipe);
std::string s;
int c = istr.get();
while (c != -1)
{ 
    s += (char) c; c = istr.get(); 
}

上に示したように、出力パイルが終了するのを待つことで、優雅な終了を簡単に処理できます。

プロセスがクラッシュした場合、どのように対処すればよいですか? Windows と Linux でこれを処理する必要があります。

4

1 に答える 1

1

別のスレッドでオブジェクトのwait()関数を使用します。ProcessHandlewait() 呼び出しが戻ると、プロセスは終了しています。通常、クラッシュするプロセスにはゼロ以外の終了コードがあり、wait()呼び出しはその終了コードを返します

于 2012-10-08T05:55:50.173 に答える