【发布时间】:2014-10-08 02:00:17
【问题描述】:
我正在开发一个嵌入式解决方案,其中两个应用程序正在运行:一个是用户界面,另一个在后台运行,为 UI 提供数据。
最近我遇到了内存泄漏或类似的错误,导致 Linux 杀死辅助进程,使 UI 处于停止状态,而没有告诉用户发生了什么。我通过阅读 Linux 的 message 日志文件和软件在终端“Kill -myapp”上的打印来解决问题。
我的问题是:我怎么会注意到来自辅助软件的此类事件(和其他类似事件),以便我可以正确向用户报告并记录它?我的意思是,很容易不时查看进程“树”以查看辅助应用程序是否正在运行,如果没有,则在 UI 中报告“发生了某些事件”,并且出现错误也是合理的- 辅助应用程序内的处理程序系统,使其将刚刚发生的事情写入日志文件,并让 UI 不时读取该文件以获取新条目,但 UI 应用程序如何更详细地知道发生了什么?突发事件? (在这种情况下,“Linux 杀死进程”,但它可能是“分段管道”或任何其他)(如果有另一个更好的解决方案,即“不断读取辅助应用程序生成的日志文件”,我'我也想知道)
注意:UI 是用 C++/Qt 编写的,辅助应用程序是用 C 语言编写的。虽然使用 Qt 库的解决方案会受到欢迎,但我认为如果提供更通用的解决方案,对整个编程社区来说会更好.
【问题讨论】:
-
阅读:alexonlinux.com/signal-handling-in-linux 从 ui 端检查也可能很聪明,因为信号处理程序可能无法在所有进程被终止的情况下运行。
标签: c++ linux qt error-handling runtime-error