我正在使用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上处理这个问题。
答案 0 :(得分:1)
在另一个线程中使用ProcessHandle
对象的wait()函数。当wait()调用返回时,进程已终止。通常是崩溃具有非零退出代码的进程,wait()
调用返回退出代码