GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Deleting-Processes.html ・ emacs-doc.conao3.com

41.5 プロセスの削除

プロセスの削除を行うと、Emacsは直ちにサブプロセスとの接続を切断します。プロセスは終了後に自動的に削除されますが、必ずしも即座に削除されるとは限りません。また、いつでも明示的にプロセスを削除できます。自動的に削除される前に、終了したプロセスを明示的に削除しても、特に問題はありません。実行中のプロセスを削除すると、そのプロセス(および子プロセスがある場合はそれらも)を終了させるシグナルが送信され、プロセスセンチネルが呼び出されます。センチネル:プロセスの状態変化の検出を参照してください。

プロセスが削除されても、他のLispオブジェクトがそれを指している限り、プロセスオブジェクト自体は存在し続けます。プロセスオブジェクトを操作するすべてのLispプリミティブは、削除済みのプロセスも受け付けますが、I/Oやシグナル送信を行うものはエラーを報告します。プロセスマークは引き続き以前と同じ場所(通常はプロセスからの出力が挿入されていたバッファ)を指し続けます。

ユーザーオプション: delete-exited-processes

この変数は、終了したプロセス(exitの呼び出しやシグナルによるもの)の自動削除を制御します。値がnilの場合、ユーザーがlist-processesを実行するまでプロセスは存続し続けます。それ以外の場合は、終了直後に削除されます。

関数: delete-process &optional process

この関数はプロセスを削除し、当該プロセスがプログラムを実行していた場合は SIGKILL シグナルで強制終了させます。引数には、プロセス、プロセス名、バッファ、またはバッファ名を指定できます。(バッファまたはバッファ名は get-buffer-process が返すプロセスを指し、指定がない場合や nil または process が指定されている場合は、現在のバッファのプロセスを強制終了させることを意味します。)実行中のプロセスに対して delete-process を呼び出すと、そのプロセスが終了し、プロセスステータスが更新され、直ちにセンチネルが実行されます。プロセスが既に終了している場合、delete-process を呼び出してもステータスやセンチネルの実行(いずれにせよ実行されます)に影響はありません。

プロセスオブジェクトがネットワーク、シリアル、またはパイプ接続を表す場合、そのステータスはclosedに変更されます。それ以外の場合はsignalに変更されますが、プロセスが既に終了している場合はこの限りではありません。process-statusを参照してください。

(delete-process "*shell*")
     ⇒ nil