Next: , Previous: , Up: Processes   [Contents][Index]


36.5 プロセスの削除

プロセス削除(deleting a process)とはEmacsをサブプロセスから即座に切断することです。プロセスは終了後に自動的に削除されますが即座に削除される必要はありません。任意のタイミングで明示的にプロセスを削除できます。終了したプロセスが自動的に削除される前に明示的に削除しても害はありません。実行中のプロセスの削除はプロセス(もしあれば子プロセスにも)を終了するためにシグナルを送信してプロセスセンチネルを呼び出します。Sentinelsを参照してください。

プロセスが削除される際、そのプロセスオブジェクト自体はそれを参照する別のLispオブジェクトが存在する限り継続し続けます。プロセスオブジェクトに作用するすべてのLispプリミティブはプロセスの削除を受け入れますが、I/Oを行ったりシグナルを送信するプリミティブはエラーを報告するでしょう。プロセスマークは通常はプロセスからの出力がバッファーに挿入される箇所となる、以前と同じ箇所をポイントし続けます。

User Option: delete-exited-processes

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

Function: delete-process process

この関数はプロセスがプログラムを実行していたらSIGKILLシグナルでkillすることによりプロセスを削除する。引数はプロセス、プロセスの名前、バッファー、バッファーの名前かもしれない(バッファーやバッファー名ならget-buffer-processがリターンするプロセスを意味する)。実行中のプロセスにdelete-processを呼び出すことによりプロセスを終了してプロセス状態を更新して即座にセンチネルを実行する。そのプロセスがすでに終了していれば、delete-process呼び出しはプロセス状態、または(遅かれ早かれ発生するであろう)プロセスセンチネルの実行に影響を与えない。

プロセスオブジェクトがネットワーク接続、シリアル接続、pipe接続を表す場合には状態はclosed、それ以外ならそのプロセスがexit済みでなければsignalに変更される。process-statusを参照のこと。

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