Man*_*d3r 5 c++ qt signals terminate
我在我的应用程序中保存设置时遇到问题。这是在相关对象的析构函数中完成的。它是一个启动器,通过关闭终止是标准情况。应用程序实际保存设置的唯一方法是手动关闭它或关闭会话(至少在肉桂上,我猜这只会关闭所有窗口)。甚至sudo reboot可以防止 Qt 应用程序展开堆栈上的对象。终止killall -s <signal> <app>于SIGINT,SIGKILL和具有相同的效果SIGTERM。如何强制我的 qt 应用程序优雅地终止于 on SIGTERM?aboutToQuit也不会发出。
Unix 信号处理程序允许调用的最小函数集。它们被称为异步信号安全函数。调用其他所有内容,包括每个 Qt 函数,都会导致未定义的行为。
仍然有一种方法可以在 Qt 中处理 unix 信号。该方法使用自管道技巧,并在 Qt 文档文章“从 Unix 信号处理程序调用 Qt 函数”中进行了描述。
基本上你打开一个管道,每当你收到一个信号::write(...) (这是一个异步信号安全功能)到管道时。在另一端,您使用QSocketNotifier收听管道。有关实现细节,请查看上面提到的 Qt 文章。
| 归档时间: |
|
| 查看次数: |
4315 次 |
| 最近记录: |