我正在开发gui应用程序(C ++ / Qt),现在正在搜索应用程序的正确(文档化)终止方式。是否有任何文档说明Unity DE如何通知gui应用程序退出(某些类似于Windows上的WM_QUERYENDSESSION信号)?
答案 0 :(得分:0)
shutdown向init(8)守护程序发送请求,以使系统进入相应的运行级别。这是通过发出runlevel(7)事件来执行的,该事件包括RUNLEVEL环境变量中的新运行级别以及PREVLEVEL变量中的先前运行级别(从环境或/ var / run / utmp获得)。
换句话说,您可以为应用程序捕获信号SIGTERM
,并在收到信号后,通过阅读/var/run/utmp
和/或/var/log/utmp
或执行runlevel
来检查当前运行级别命令。如果runlevel
返回类似2 0
(prevlevel runlevel)的内容,则表示系统正在尝试从级别2
切换到级别0
,即关闭。
这可能会让你有很短的时间来对当前的关机作出反应(但我认为你不能阻止它)。