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呼び出しはプロセス状態、または(遅かれ早かれ発生するであろう)プロセスセンチネルの実行に影響を与えない。

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