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

How to detect when a Poco sub Process crashes?

本文关键字:Poco 子进程 何时 崩溃 检测 何检测      更新时间:2023-10-16

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

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