LinuxプログラムはSIGXXXコマンドを受け取り、UIから応答できますか?

LinuxプログラムはSIGXXXコマンドを受け取り、UIから応答できますか?

頑張っています停止する終了シグナルがあるかどうか疑問に思うコマンド、グラフィカルデスクトップ、ターミナルプログラム、またはGUIプログラムは、コマンドまたはウィンドウのボタンをクリックするかのFile| ExitようXに、ユーザーがUIでプログラムを終了したかのように処理します。したがって、開いているファイルを保存するように求められます。

kill -l64以上のオプションを表示します。終了したGUIオプションと個別に組み合わせたものはありますか?

私はこれをnano例にしてみましたが、これまで試してきたオプションのうちSIGTERMを除いては機能しません。

答え1

習慣。ユーザーがプロセスを終了するために一般的に使用する主な信号は次のとおりです。

  • SIGINT(+から端末に送信Ctrl) - 現在の操作を中断し、最上位の対話型ループに移動します。Cプログラムに最上位の対話型ループがない場合は、プログラムを終了します。
  • SIGTERM - プログラムを完全に停止します。これにより緊急保管が発生する可能性があります。
  • SIGHUP - 端末が消えると、システムは端末で実行されているプログラムに送信します。通常はSIGTERMのように扱われます。
  • SIGQUIT(ターミナルから+に転送Ctrl) - クリーンアップとコアダンプなしでダイされます(デバッグに使用されます)。\
  • SIGKILL - プログラムがクリーンアップ操作を実行する機会なしに終了します。

これらのどれも一般的な意味がありません。つまり、プログラムがユーザーに何かを尋ねるメッセージを表示します。プログラムがSIGTERMに対してプロンプトを表示するのは合理的ですが、そうするプログラムは考えられません。一部のプログラムは、SIGINT にプロンプ​​トを表示して、最上位レベルに戻る、プログラムを終了する、またはデバッグモードに入るオプションを提供します。通常、プログラムがSIGTERMを受信したときに、ユーザーがプログラムと対話するコンソールの前にいないか、プログラムが応答しないと仮定します。それ以外の場合、ユーザーはシグナルを送信するのではなく対話式コントロールを使用します。

GUIイベント(たとえば、xウィンドウのタイトルバーのボタンクリック)は信号を送信せず、代わりに通常のX11通信チャネルを介して送信されます。

関連情報