Next: Shell Arguments, Previous: Processes, Up: Processes
プログラムを実行するために新たなサブプロセスを作る関数が3つあります。
その1つstart-process
は、非同期プロセスを作成して
プロセスオブジェクトを返します(see Asynchronous Processes)。
残りの2つ、call-process
とcall-process-region
は
同期プロセスを作成しますが、プロセスオブジェクトは返しません
(see Synchronous Processes)。
同期/非同期プロセスについては以下の節に述べます。 3つの関数の呼び出し方は類似しているので、 ここではそれらに共通な引数について述べます。
いずれの場合でも、関数の引数programは、
実行すべきプログラムを指定します。
そのファイルがみつからなかったり実行できないと、
エラーを通知します。
ファイル名が相対名であると、
変数exec-path
は探索すべきディレクトリのリストを保持しています。
Emacsは起動時に環境変数PATH
の値に基づいてexec-path
を
初期化します。
‘~’、‘.’、‘..’のファイル名の標準的な書き方は、
exec-path
でも普通どおりに解釈されますが、
(‘$HOME’などの)環境変数の置換は認識しません。
それにはsubstitute-in-file-name
を使います
(see File Name Expansion)。
サブプロセスを作成する各関数には、
プログラムの標準出力の受け取り場所を指定する
引数buffer-or-nameがあります。
これはバッファかバッファ名である必要があります。
バッファ名であると、そのバッファが既存でなければ新たに作成します。
nil
でもかまいませんが、その場合、
フィルタ関数で処理しない限り出力を破棄します。
(Filter Functionsとsee Read and Print)。
通常、複数のプロセスの出力を同じバッファへは送らないようにします。
それらの出力がでたらめに混ざってしまうからです。
サブプロセスを作成する3つの関数すべてに、
&rest
引数であるargsがあります。
argsはすべてが文字列である必要があり、
それぞれを区切ってコマンド行引数としてprogramに与えられます。
引数全体を指定されたプログラムへ直接渡すため、
これらの引数ではワイルドカード文字や他のシェル構文の特別な意味はありません。
注意: 引数programにはプログラムの名前だけを指定し、 コマンド行引数はいっさい指定しない。 コマンド行引数はargsで与えること。
サブプロセスのカレントディレクトリは
default-directory
の値で決まります(see File Name Expansion)。
サブプロセスはEmacsから環境変数を継承しますが、
優先するものをprocess-environment
で指定できます。
See System Environment。