在Unity,Ubuntu 13.04中捕获关闭事件的方法

时间:2013-12-11 06:19:16

标签: linux qt ubuntu shutdown

我正在开发gui应用程序(C ++ / Qt),现在正在搜索应用程序的正确(文档化)终止方式。是否有任何文档说明Unity DE如何通知gui应用程序退出(某些类似于Windows上的WM_QUERYENDSESSION信号)?

1 个答案:

答案 0 :(得分:0)

来自man 8 shutdown

  

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,即关闭。 这可能会让你有很短的时间来对当前的关机作出反应(但我认为你不能阻止它)。