如何检测Poco子进程何时崩溃?

时间:2012-07-23 16:28:12

标签: c++ c++11 poco-libraries

我正在使用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上处理这个问题。

1 个答案:

答案 0 :(得分:1)

在另一个线程中使用ProcessHandle对象的wait()函数。当wait()调用返回时,进程已终止。通常是崩溃具有非零退出代码的进程,wait()调用返回退出代码