Go to the first, previous, next, last section, table of contents.

同期プロセスを作る

同期プロセスは、以下に述べる 2種類の関数で作られます。同期というのは Emacs が (先に進む前に) そのプロセスの終了を待つことを意味します。

Function: call-process program &optional infile buffer-name display &rest args

この関数は、別プロセスとして program を呼び、その終了を待ちます。 nil を返 します。

このプロセスの標準入力は、 infile が nil でない場合 infile から来て、 nil の場合 /dev/null から来ます。このプロセスの出力を、 buffer-name がバッファ 名である場合、 (その)バッファのポイントの前に挿入し、 t の場合カレントバッ ファを用い、 nil の場合、その出力を捨てます。 0 の場合、出力を捨て call- process はすぐ戻ります。

display が non-nil の場合、call-process は (出力がバッファに挿入されるごと に)バッファの(再)表示を行ないます。そうでない場合、このコマンドが完全に終 了するまで(バッファに)出力を見ることはできません。

この関数は、 program が終了するのを待ちます。アボートした場合(e.g., C-g を タイプすることで)このプロセスを kill します。

以下の例は(全て)バッファ foo から起動されています。

  (call-process "pwd" nil t)
  => nil
  ---------- Buffer: foo ----------
  /usr/user/lewis/manual
  ---------- Buffer: foo ----------
  (call-process "grep" nil "bar" nil "lewis" "/etc/passwd")
  => nil
  ---------- Buffer: bar ----------
  lewis:5LTsHm66CSWKg:398:21:Bil Lewis:/user/lewis:/bin/csh
  ---------- Buffer: bar ----------

Function: call-process-region start end program &optional delete buffer-name display &rest arguments

この関数は、 start と end の間のテキストを標準入力として、 program を走ら せているプロセスに送ります。 delete が non-nil の場合、これはテキストを削 除します。

buffer-name がバッファ名である場合、この出力をそこに入れ、 buffer-name が t の場合、出力をカレントバッファに入れます。 buffer が nil の場合、この出 力を捨てます。

display が non-nil の場合、call-process-region は (出力が挿入されるごとに) バッファの再表示を行ないます。そうでない場合、このコマンドが完全に終了する まで(バッファに)出力を見ることはできません。

この関数は、(通常) program が終了するのを待ちます。クィットした場合(e.g., C-g をタイプすることで)このプロセスを kill します。

以下に示す最初の例において、バッファの次の 5 文字 (input) を標準入力として unix プログラム cat が呼ばれます。 cat はこの標準入力を標準出力にコピーし ます。これは、それをこのバッファに挿入します。 nil を返します。

  (call-process-region 5 10 "cat" nil t)
  => nil
  ---------- Buffer: foo ----------
  input
  ---------- Buffer: foo ----------


Go to the first, previous, next, last section, table of contents.