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()函数。ProcessHandle当 wait() 调用返回时,进程已终止。通常崩溃的进程有一个非零退出代码,并且wait()调用返回该退出代码

于 2012-10-08T05:55:50.173 回答