(プログラムを走らせるための) Unix サブプロセスを(新しく)作る関数には 3 種類の ものが存在します。 start-process は非同期プロセスを作りプロセスオブジェクトを 返します。残りの call-process と call-process-region は同期プロセスを作りプロ セスオブジェクトは返しません。これらの用語に関しては以下で定義します。この 3種 類の関数は同じように呼ばれるため、ここではそれらに共通するアーギュメントに関し その詳細を述べます。
全ての場合、アーギュメント program で名付けられる(起動される)プログラムは Unix における通常の規則に従って探されます。絶対パス名が与えられた場合、このプログラ ムはその指定された場所に見つからなくてはいけません。相対パス名が与えられた場
合、このプログラムは、 (Emacs に入った時の、このユーザーの PATH 変数で設定され た) exec-path 中の各ディレクトリで探されます。標準シンボル `~' と `.' と `..' は Unix シェルにおけるのと同じようにインタープリットされます。環境変数 (HOME 等) は用いられません。セクション 22.5.1 [expand-file-name] 、ページ 215 参照。 プログラムが見つからない場合、エラーになります。
この 3 種類の関数は各々アーギュメント buffer-name を持っています。このバッファ は、プログラムからの標準出力の行く場所です。 buffer-name はバッファか、バッ ファの名前で、まだ存在してない場合作られます。 buffer-name が nil の場合、出力 ストリーム(どのようにして??) もフィルター関数も指定されてないと、出力は、 `/dev/null' に向けられ捨てられます (セクション 32.5.1 [プロセスフィルター]、 ページ 322 参照、チャプター 16 [ストリーム]、ページ 127 参照)。出力が混ってし まう可能性があるため、通常、2 つ以上のプロセスを 1つのバッファに出力させてはい けません。
これらの関数は、それぞれ &rest アーギュメント args を持っています。この args はストリングでなくてはならず、コマンド行アーギュメントとして program に与えら れます。アーギュメント program は、プログラムの名前でなくてはならず、 program に対するアーギュメントを含んでいてはいけません。
Variable: process-environment
このグローバル変数は、起動するプロセスの環境にアペンドするストリングのリス トです。 (これは同期プロセスにも適用される??)
process-environment => ("l=/usr/stanford/lib/gnuemacs/lisp" "PATH=.:/user/lewis/bin:/usr/class:/nfsusr/local/bin" "USER=lewis" "TERM=ibmapa16" "SHELL=/bin/csh" "HOME=/user/lewis")
Variable: exec-directory
この変数の値は、GNU Emacs とともについてくるプログラムの存在するディレクト リの名前(ストリング)です。これらのプログラムは Emacs から起動されます。例 えば、プログラム loadst は "display time" プログラムで用いられ、1 秒ごとに 今の時間のストリングを返します。
User Option: exec-path
この変数の値は、サブプロセスで走らせるプログラムを探すディレクトリのリスト です。各要素はディレクトリの名前(i.e., ストリング)か、デフォルトのディレク トリ(default-directory)を表わす nil です。
これはアーギュメントが絶対パス名を含まない場合、 call-process で用いられま す。