CentOS/Gnome上でのアプリケーションにおける、ログアウト時の確認/ログアウト処理の抑止方法について
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及びそれに関する処理が全て無効化されておりました。