分叉应用程序崩溃后采取行动

Take action after forked application crash

本文关键字:应用程序 崩溃 分叉      更新时间:2023-10-16

我想做一件事,但我不知道这是可能的。

我的应用程序从控制台中的一些消息开始

std::cout << "appStart" << std:endl

之后,儿童QT进程确实在Framebuffer(屏幕)中绘制。如果我的QT过程失败,我可以捕获它并杀死QT过程,并且我想在控制台中显示一条消息

std::cout << "app CRASH!" << std:endl

但是屏幕被冻结,QT绘制的最后一个内容,我的消息未显示在屏幕上。如何清除屏幕并再次显示控制台以查看我的消息?

最后,我发现了问题。问题是儿童过程的杀戮方法。以前我用

关闭了图形过程
SIGKILL     9   /* Kill, unblockable (POSIX).  */

,该过程在没有任何控制的情况下停止,留下屏幕状态。用

#define SIGTERM     15  /* Termination (ANSI).  */

该过程被正确停止,并且控件将返回我的主程序。