Next: Filter Functions, Up: Output from Processes [Contents][Index]
プロセスは関連付けられたバッファー(associated buffer)をもつことができます(通常はもつ)。これは普通のEmacsバッファーであり、2つの目的のために使用されます。1つはプロセスからの出力の格納、もう1つはプロセスをkillする時期を判断するためです。通常の習慣では任意の与えられたバッファーにたいして関連付けられるプロセスは1つだけなので、処理対象のプロセスを識別するためにそのバッファーを使用することもできます。プロセス使用の多くはプロセスに送信する入力を編集するためにもこのバッファーを使用しますが、これはEmacs Lispの組み込みではありません。
デフォルトでは、プロセスの出力は関連付けられたバッファーに挿入されます(カスタムフィルター関数の定義により変更可能。Filter Functionsを参照)。出力を挿入する位置はprocess-mark
により決定されます。これは正に挿入されたテキストの終端にポイントを更新します。通常(常にではない)はprocess-mark
はバッファーの終端になります。
プロセスに関連付けられたバッファーをkillすることによりプロセスもkillされます。そのプロセスのprocess-query-on-exit-flag
が非nil
なら、Emacsはまず確認を求めます(Query Before Exitを参照)。この確認は関数process-kill-buffer-query-function
により行われて、これはkill-buffer-query-functions
から実行されます(Killing Buffersを参照)。
この関数は、プロセスprocessの関連付けられたバッファーをリターンする。
(process-buffer (get-process "shell")) ⇒ #<buffer *shell*>
この関数はprocessにたいするプロセスマーカーをリターンする。これはプロセスからの出力をどこに挿入するかを示すマーカー。
processがバッファーをもたなければ、process-mark
は存在しない場所を指すマーカーをリターンする。
デフォルトのフィルター関数はプロセス出力の挿入場所の決定にこのマーカーを使用して、挿入したテキストの後にポイントを更新する。連続するバッチ出力が連続して挿入されるのはこれが理由。
カスタムフィルター関数はこのマーカーを通常は同じ方式で使用すること。process-mark
を使用するフィルター関数の例はProcess Filter Exampleを参照のこと。
ユーザーにプロセスバッファー内でプロセスに送信するための入力を期待する際には、プロセスマーカーは以前の出力から新たな入力を区別する。
この関数はprocessに関連付けられたバッファーにbufferをセットする。bufferがnil
ならプロセスはバッファーに関連付けられない。
この関数はbuffer-or-nameで指定されるバッファーに関連付けられた、削除されていないプロセスをリターンする。そのバッファーに複数のプロセスが関連付けられている場合には、この関数はいずれか1つ(現在のところもっとも最近作成されたプロセスだがこれを期待しないこと)を選択する。プロセスの削除(delete-process
を参照)により、そのプロセスはこの関数がリターンするプロセスとしては不適格となる。
同一のバッファーに複数のプロセスを関連付けるのは、通常は悪いアイデアである。
(get-buffer-process "*shell*") ⇒ #<process shell>
プロセスのバッファーをkillすることにより、SIGHUP
シグナルでサブプロセスをkillしてプロセスを削除する(Signals to Processesを参照)。