外部プロセスを起動する
同期プロセスの起動
外部コマンドを呼び出し,これが実行を終了するまで待ち合わせる.
例1 tgifを起動する
まず,何もオプションの無い,最も簡単な呼び出し方を紹介する.
(call-process "tgif")
これを実行すれば,tgifが起動する.しかし,同期プロセスであるため,tgifで作業はできても,emacsの作業はできないことに気づくだろう.シェルでtgifをフォアグラウンドで起動すると,tgifを終了するかサスペンドするまで,シェルの操作ができないのと同様である.
例2 ディレクトリ内のファイルを挿入する
次に,出力先をカレントバッファに設定する例を紹介する.
(call-process "ls" nil t nil "/usr/")
ここで,\C-xe を入力し実行すると,次の出力が得られる.
X11
X11R6
bin
etc
include
...
上の例では,/usr/直下のファイル一覧を,カーソル位置に展開する.ここでは,3番目の引数 (destination) にtを指定し,出力先をカレンドバッファとしている.
非同期プロセスの呼び出し
例1 tgifを起動する
例によって,最も簡単なtgifの起動について紹介する.
(start-process "tgif" "*tgif*" "tgif")
1個目の引数はEmacsが内部で識別する名前である.2個目の引数は起動するプロセスの標準出力と標準エラー出力が表示されるバッファ名である.3個目の引数は起動するプロセスのコマンドである.
こちらは非同期であるため,tgifもemacsも作業できる.シェルにおけるバックグラウンド実行に似ている.