如何检测Poco子进程何时崩溃
How to detect when a Poco sub Process crashes?
我正在使用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()
调用返回退出代码
相关文章:
- 终止 QProcess 不会终止子进程
- 什么时候最好在子进程中使用 CPU 或 I/O 密集型代码 [ C++ ]
- 子进程更新共享 mmap 内存,但父进程没有更改
- 使用 waitpid 时等待子进程终止
- 使用重定向标准处理子进程中的 kbhit
- 由 JOB 中的进程启动的子进程是否可以将 JOB 属性设置为脱离作业?
- 是否可以将子进程的 stdout 重定向到父进程中的另一个文件?
- kill() 总是返回 0(成功),即使在子进程已经结束之后?
- 父进程和子进程之间的 POSIX 信号量
- 检测到由于操作系统内存不足而导致子进程终止
- 使用system()创建独立的子进程
- 从stdin读取时子进程挂起(fork/dup2竞争条件)
- 在 Bash 脚本中处理来自子进程的信号
- Qt C++ - 如何成功将数据传递给子进程?
- C++ 窗口本地系统模拟在子进程中失败
- 将类型化数组写入子进程 stdin 无法正常工作
- 将 nodejs 脚本作为子进程执行(而不是从其他脚本执行)
- 使用信号检测子进程何时终止的最佳方法是什么?
- 等待等待失效的子进程
- 如何检测Poco子进程何时崩溃