【发布时间】:2018-06-09 01:39:55
【问题描述】:
我想做一件事,但我不知道这是可能的。
我的应用以控制台中的一些消息开始
std::cout << "appStart" << std:endl
之后,子 Qt 进程会在帧缓冲区(屏幕)中进行绘制。如果我的 Qt 进程出现故障,我可以捕获它并终止 Qt 进程,并且我想在控制台中显示一条消息
std::cout << "app CRASH!" << std:endl
但是屏幕被 Qt 最后一次绘制的内容冻结了,我的消息没有显示在屏幕上。如何清除屏幕并再次显示控制台以查看我的消息?
【问题讨论】:
-
如何启动要监控的子进程?如果您使用的是QProcess,您可以观察
finished()信号以了解它是正常退出还是崩溃。 (另外,在 Windows 10 上,如果您单击并突出显示控制台窗口中的任何内容,它会冻结窗口以防止添加更多文本。请确保您没有意外这样做。它不止一次让我绊倒。) -
请详细说明“如果我的 Qt 进程出现故障,我可以捕获它并终止 Qt 进程”。
-
与问题无关...这是对问题的简化。我的 Qt 子进程已经完成,我想清理屏幕并再次查看我的 std:cout 消息。这可能吗?
-
@XabiE,是的,当然,这是最相关的事实!但这不可能是真的,因为
fork()用于复制调用进程(即,您不能使用fork()启动不同的应用程序,您只能使用fork()创建进程的另一个实例。 )。你还有别的意思吗? -
@XabiE 听起来您的问题应该以 POSIX 进程处理为框架。除非您想切换过程控制技术,否则 Qt、cout 和 framebuffer 标记在此处不相关。 (更新:我更改了标签。)
标签: c++ unix process fork posix