Emacs Lispから非同期に外部プロセスを起動する

mona-build.elのおかげでEmacsソースコードを編集時に自動でMonaがビルドされるようになりました。


次に面倒なのがQEMUの起動です。
Alt-Tabでターミナルに移動して、ctrl-p Enter。たったこれだけなんだけど面倒!。


自動ビルドが成功したら、自動でQEMUが起動ってのが一瞬頭をよぎったのですが絶対使いづらいと思って思いとどまりました。
というわけで、start-processを関数を利用して非同期に外部プロセスを起動します。


start-processの引数は以下の通り。

  • 第一引数:プロセスにつける名前。Emacs Lispからアクセスする際に利用される名前です。何でも良い。
  • 第二引数:プロセスの出力先。
  • 第三引数:プログラム
  • 以降の引数:プログラムに渡すコマンドライン引数
(defun mona-build-exec-qemu ()
  "execute qemu"
  (interactive)
  (start-process "qemu" "*mona-build-qemu*"
                  "/usr/bin/qemu" "-cdrom" "/home/taro/mona/tool/mkimg/mona.iso" "-fda" "/home/taro/mona/tool/mkimg/mona.img" "-boot" "d"))


こんなのを定義して c-c q に割り当てています。
快適です。

補足

start-process の戻り値は プロセスオブジェクトです。
プロセスオブジェクトを介して exit status などを知ることも出来ます。