我有一个应用程序,无论进程如何结束,都应该运行清理代码。例如,如果由于重新启动而由OS关闭程序,则应执行清理代码。或者如果按下CTRL + C,则应执行清理代码。
我找到了QCoreApplication::aboutToQuit
信号。
信号状态的文档:
当应用程序即将退出主事件循环时发出此信号,例如,当事件循环级别降至零时。这个 可能在从应用程序内部调用quit()之后发生 或当用户关闭整个桌面会话时。
如果您的应用程序必须执行某些操作,则该信号特别有用 最后一次清理。请注意,此处无法进行用户交互 状态。
然而,在测试之后,我注意到按下CTRL-C时没有发出信号。当kill
终止时,它也不会被释放。
关于什么'退出'事件是发出的信号吗?
我目前的观点是,QCoreApplication::aboutToQuit
对于处理外部信号毫无用处,并且用于从应用内部退出'一种事件(用户单击X按钮关闭窗口),但如果您想确保某个事件即使在分段错误或外部杀死的过程中也会执行,也不会帮助您。
答案 0 :(得分:1)
你可以这样做(一段时间后遇到同样的问题并发现它能很好地运作):
http://www.thegeekstuff.com/2012/03/catch-signals-sample-c-code/
良好的示例代码+所有系统信号: