概要
Atom エディタの自作パッケージで子プロセスを呼んで、子プロセスのコンソール出力を取得するサンプルコードを紹介します。
サンプルコード
結論としては、 Atom エディタは Node.js 動いているので、child_process モジュールを使って子プロセスを起動できるという話でした。下記コードでは child_process.execFile
で実行ファイルを起動し、その結果を callback
関数で受け取って処理しています。
# 子プロセス実行後に呼ばれるコールバック関数
callback = (err, stdout, stderr) ->
# エラーの時
if err
console.log stderr
# 成功時
console.log stdout
return
exec = require('child_process').execFile
# 子プロセスを呼ぶ
exec '[実行ファイルのパス]', callback
参考サイト
Execute an exe file using node.js
Node js child_process.execFile return
node.jsのchild_processのexecとexecFileとspawnの違い
動機
Atom エディタを使っていて自分用の追加機能が欲しくなり、プラグイン(Atom ではパッケージと呼ばれる)を自作する方法を調べました。すると Node.js & coffee script で作成する必要があることが分かりました。
しかしちょっとした拡張機能を作るのに新しいライブラリと言語を覚えるのはしんどいと思い。主要な処理は自分の慣れた言語で作ることにして、 Atom エディタ側で標準出力だけ受け取ることができれば手間が少なくてすむなと思いました。