Previous: Filter Functions, Up: Output from Processes


36.9.3 プロセスからの出力を受け取る

非同期サブプロセスからの出力は、 Emacsが時間待ちや端末入力などの なんらかの外部事象を待っているときにのみ到着します。 Lispプログラムから特定の場面で出力の到着を明示的に許したり、 プロセスの出力が到着するのを待つことができると有用なことがあります。

— Function: accept-process-output &optional process seconds millisec

この関数は、Emacsにプロセスからの未処理の出力を読み取ることを許す。 その出力は、対応付けられたバッファに挿入されるか、 フィルタ関数に与えられる。 processnil以外であると、 この関数は、processからなんらかの出力を得るまで戻らない。

引数secondsmillisecは、時間切れを指定する。 前者は秒単位の時間、後者はミリ秒単位の時間を指定する。 指定された2つの時間は合計され、 任意のサブプロセスの出力を受け取ったどうかに関わらず、 その時間だけ経過するとaccept-process-outputは戻ってくる。

引数secondsは整数である必要はない。 浮動小数点数であると、この関数は秒未満の時間も待つ。 秒未満を扱えないシステムもある。 そのようなシステムでは、secondsを切り下げる。

すべてのオペレーティングシステムで秒未満を扱えるわけではない。 扱えないシステムでmillisecにゼロ以外を指定すると エラーになる。

関数accept-process-outputは、 出力を得るとnil以外を返す。 あるいは、出力が到着するまえに時間切れするとnilを返す。