次: , 前: Asynchronous Processes, 上: Processes


36.5 プロセスの削除

プロセスを削除するとは、サブプロセスからEmacsをただちに切り離し、 サブプロセスを活性なプロセスリストから取り除くことです。 サブプロセスへシグナルを送ってサブプロセスを終了させますが、 ただちに終了するとは保証されません。 プロセスオブジェクトを指すLispオブジェクトがある限り、 プロセスオブジェクトは存在し続けます。 プロセスマークは以前と同様に同じ場所 (プロセスからの出力をバッファに挿入した箇所)を指し続けます。

プロセスはいつでも明示的に削除できます。 プロセスは終了後に自動的に削除されますが、 終了後ただちにではありません。 終了したプロセスが自動的に削除されるまえに明示的に削除しても無害です。

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

この変数は、(exitを呼び出すかシグナルのために)終了した プロセスの自動削除を制御する。 nilであると、ユーザーがlist-processesを 実行するまで存在し続ける。 さもなければ、終了後にただちに削除する。

— 機能: delete-process name

この関数は、nameに対応付けられたプロセスを シグナルSIGHUPでキルし削除する。 引数は、プロセス、プロセス名、バッファ、バッファ名のいずれかである。

          (delete-process "*shell*")
               => nil
     
— 機能: process-kill-without-query process &optional do-query

この関数は、Emacsを終了するときにプロセスprocessが動作中であると、 ユーザーに問い合わせるかどうかを指定する。 do-querynilであると、プロセスを黙って削除する。 さもなければ、Emacsはプロセスのキルに関して問い合わせる。

問い合わせるようにしてあったプロセスであると戻り値はtであり、 さもなければ戻り値はnilである。 新たに作成されたプロセスは、つねに問い合わせ用になっている。

          (process-kill-without-query (get-process "shell"))
               => t