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

非同期プロセスを作る

非同期プロセスは start-process で作られ、制御はEmacs に戻されます。このプロ セスは(この後) Emacs と同時に走り、(後のセクションで述べる)関数を通し、(互い に)コミュニケートします。

Function: start-process name buffer-name program &rest arguments

この関数は、(新しく)プロセスを作り、そのプロセスでプログラムを起動します。 このプロセスは name を必要に応じて修正したもので名付けられます。バッファ buffer-name は、そのプロセスに対応付けられる(訳注:associated)バッファで す。 program は、起動するプログラムです。

start-process は作成したプロセスを返します。 "プロセスに与えられる名前は、 (プロセスにおいて)一意 (訳注:unique among processes)である" ことが保証さ れます。これはユーザーが与えた名前か、そのプログラムの名前か、一意にするた めに必要であれば、 (`<1>', `<2>' 等をアペンドすることで)修正したものです。

以下の例において、最初のプロセスは起動され 100 秒走り sleep します。一方、 2番目のプロセスは起動され、最初のプロセスが終了する前にバッファ processes.texinfo の終りにディレクトリのリストを挿入し、終了するまで走りま す。最初のプロセスが終了すると、それは Process my-process finished をバッ ファの終りに挿入します。

  (start-process "my-process" "foo" "sleep" "100")
  => #<process my-process>
  (start-process "my-process" "ls" "-l" "/user/lewis/bin")
  => #<process my-process<1>>
  ---------- Buffer: foo ----------
  total 2
  lrwxrwxrwx  1 lewis          14 Jul 22 10:12 gnuemacs -> /usr/bin/emacs
  -rwxrwxrwx  1 lewis          19 Jul 30 21:02 lemon
  Process my-process<1> finished
  Process my-process finished
  ---------- Buffer: foo ----------

Variable: process-connection-type

このグローバル変数は、サブプロセスとコミュニケートするのに用いるデバイスの タイプを制御します。 nil の場合パイプを用います。 t の場合 pty を用います (pty がサポートされていない場合、パイプを用います - これは Emacs がコンパ イルされた時に定義されてなくてはいけない Cの定数 HAVE-PYTS で定められま す)。プロセスとその子供(訳注:のプロセス)との間でのジョブコントロールを可 能にするため、(通常) pty のほうが好ましいと言えます。

process-connection-type の値は start-process が呼ばれる時、用いられます。 このため start-process の(ある 1回の)呼び出しにおいてのみこの値を変えたい 場合、let を用いこれを一時的にバインドしなおします。

  ((let ((process-connection-type nil))  ; パイプを用いる。
     (start-process ...))


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