Emacsを終了させるとは、Emacsプロセスの実行を終了させることを意味します。ターミナルからEmacsを起動した場合、通常は親プロセスが制御を再開します。Emacsを終了させるための低レベルプリミティブはkill-emacsです。
このコマンドはフック kill-emacs-hook を呼び出し、その後 Emacs
プロセスを終了して強制終了させます。
exit-data が整数の場合、それが Emacs プロセスの終了ステータスとして用いられます。(これは主にバッチ運用において有用です。バッチモードを参照してください。)
exit-data が文字列の場合、その内容(に続いて改行)がターミナルの入力バッファに投入され、シェル(または次に入力を読み込むプログラム)がそれを読み取れるようになります。ただし、Emacs がターミナル上で対話的に動作していない場合や、投入に特別な権限が必要な場合、あるいはこのプラットフォームでサポートされていない場合は、投入処理は暗黙的にスキップされます。
exit-data が整数でも文字列でもなく、あるいは省略されている場合は、プログラムの正常終了を示す(システム固有の)終了ステータスを使用することを意味します。
restart が nil
でない場合は、単に最後に終了するのではなく、現在実行中の Emacs プロセスと同じコマンドライン引数を用いて、新しい Emacs
プロセスを起動してください。
kill-emacs 関数は通常、より上位のコマンドである C-x
C-c (save-buffers-kill-terminal)
を介して呼び出されます。The GNU Emacs Manual の Exiting
を参照してください。また、Emacs が SIGTERM または SIGHUP
のオペレーティングシステムシグナルを受信した場合(例:制御端末が切断された場合)、あるいはバッチモードで動作中に SIGINT シグナルを受信した場合(Batch Mode を参照)にも、自動的に呼び出されます。
この通常のフックは、Emacsを終了させる前に kill-emacs によって実行されます。
kill-emacs
はユーザー操作が不可能な状況(例:端末が切断されている場合)でも呼び出されるため、このフックの関数ではユーザーとの対話を試みるべきではありません。Emacs
のシャットダウン時にユーザーと対話したい場合は、後述する kill-emacs-query-functions を使用してください。
Emacsを終了すると、保存済みのファイルを除き、Emacsプロセス内のすべての情報が失われます。誤ってEmacsを終了させると多くの作業内容が失われる可能性があるため、save-buffers-kill-terminalコマンドは、保存が必要なバッファや実行中のサブプロセスがあるかどうかの確認を求めます。また、異常フックkill-emacs-query-functionsも実行します:
save-buffers-kill-terminal が Emacs
を終了させる際、標準的な確認を行った後、kill-emacs
を呼び出す前に、このフック内の関数を呼び出します。関数は出現順に、引数なしで呼び出されます。各関数はユーザーに追加の確認を求めることができます。いずれかの関数が
nil を返した場合、save-buffers-kill-emacs は Emacs
を終了させず、このフック内の残りの関数も実行しません。kill-emacs
を直接呼び出しても、このフックは実行されません。
このコマンドは save-buffers-kill-emacs と同じ動作をしますが、最後に現在の
Emacs プロセスを単に終了させるのではなく、現在実行中の Emacs プロセスと同じコマンドライン引数を用いて、新しい Emacs
プロセスを再起動します。