

CentOS 6.4 にてQt(4.8)によるアプリケーション開発をしています。

アプリケーションを起動させたまま「ログアウト」を行うと、そのままアプリケーションが終了してログアウトになりますが、これを抑止し、Gnomeセッションマネージャより終了確認を行わせる、もしくは、アプリケーションで側で決めた処理を終了させるまでログアウト(とアプリケーション終了)を行わせない、といったことをするには、どのようにすればよいでしょうか。

実現が望ましい優先順位としては、

  * セッションマネージャーより、セッション終了の問い合わせが行われる
  * アプリケーション側でexitするまで、ログアウト処理(セッション終了処理)は行われない  
と考えております。

当方で下記を試してみましたが、いずれも意図した挙動(ログアウトの抑止)とはならず、ログアウト実行に伴い確認や抑止等なしでアプリケーションがそのまま終了する挙動になりました。

  * SIGHUPとSIGTERMをトラップして、シグナルハンドラでwhile(1)ループを回す。  
1から64まで、トラップ可能なシグナルを全部トラップしても同様。

  * SIGHUPとSIGTERMをSIG_IGNする。  
1から64まで、無視可能なシグナルを全部無視しても同様。

  * アプリケーションのメインウィンドウ(QWidget)のcloseEvent をオーバーライドし、「本当に終了しますか？」という主旨のQMessageBoxを生成し、exec()して終了処理の進行を止める。

QtにはQSessionManagerという仕組みがあるという情報があり、それも試作してみようとしましたが、configure/buildされたライブラリではQSessionManager及びそれに関する処理が全て無効化されておりました。


CC BY-SA 3.0
2017-01-20T04:36:08.083
32008
2017-01-20T05:01:58.193
2017-01-20T05:01:58.193
754
20297
question
centos qt
CentOS/Gnome上でのアプリケーションにおける、ログアウト時の確認/ログアウト処理の抑止方法について