我在保存应用程序中的设置时遇到问题。这是在相关对象的析构函数中完成的。它是一个启动器,并通过关机终止是一个标准情况。应用程序实际保存设置的唯一方法是手动关闭它或关闭会话(至少在肉桂上,我想这只是关闭所有窗口)。即使sudo reboot
也会阻止Qt应用程序解除堆栈上的对象。终止killall -s <signal> <app>
对SIGINT
,SIGKILL
和SIGTERM
具有相同的效果。我如何强制我的qt应用程序正常终止于SIGTERM
? aboutToQuit也没有发射。通过unix信号优美地终止Qt应用程序
2
A
回答
2
不幸的是,互联网传播了大量明显的错误信息,导致未定义行为的方式。有一个允许unix信号处理程序调用的最小函数集。它们被称为异步信号安全函数。调用其他所有东西,包括每个Qt函数,都会导致undefined beghaviour。仍然有一种方法可以处理Qt中的unix信号。这种方式使用自我管理技巧,并在Qt文档文章"Calling Qt Functions From Unix Signal Handlers"中描述。
基本上,你打开一个管道,每当你得到一个信号,你::write(...)
(这是一个异步信号安全函数)的管道。另一方面,您使用QSocketNotifier来收听管道。有关实现细节,请查看上面提到的Qt文章。
相关问题
- 1. Java程序的优雅终止和终止信号的记录
- 2. MFC应用程序挂起线程发信号通知终止
- 3. 优美的终止
- 4. 用特定信号终止外部程序通过asyncio运行
- 5. 当地通知应用程序终止
- 6. 通过终端停止应用程序
- 7. 'head'由信号终止13 Unix错误
- 8. “通过信号(11)终止进程”始终与NDK相关?
- 9. 如何发送终止信号来停止Rails应用程序?
- 10. 防止在优胜美地上下载Mac应用程序
- 11. 使用信号优雅地终止Autobahn ApplicationRunner()。run().SIGINT
- 12. GLib程序终止信号处理?
- 13. 如何终止所有终止信号被忽略的过程?
- 14. 在Windows上优雅地终止命令行应用程序
- 15. 在Xcode终止应用程序与信号6
- 16. 终止Python应用程序等待信号灯
- 17. MonoTouch AdHoc Distribution - 该应用程序被一个信号终止:SIGIOT
- 18. 该程序需要终止多少个终止信号
- 19. 通过本地通知启动终止应用程序的正确方法
- 20. 如何确保iOS应用程序终止后本地通知* *应用程序终止后
- 21. QT线程,信号顺序
- 22. 信号15终止
- 23. 优美的关机终止延迟?
- 24. 终止应用程序swift后发送本地通知2
- 25. 应用程序终止后发送本地通知
- 26. 终止应用程序的本地横幅通知
- 27. 通过PIPE发送Unix/Linux信号
- 28. 体面号程序终止
- 29. 应用程序不终止
- 30. 终止应用程序
你想要的是在你的过程中捕获SIGTERM信号并相应地处理它。更多信息[here](http://stackoverflow.com/questions/17942034/simple-linux-signal-handling)。 –
http://stackoverflow.com/a/975736/1122645 – UmNyobe
谢谢,这些链接包含解决方案。 – ManuelSchneid3r