Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

child_processで、nodeでもshell commandをつかう

child_processをつかうと、node.jsのアプリでもシェルコマンドを使う事ができます。
裏で画像処理したりとか、ローカルにおいたファイルを都度参照するときには便利ですね。

実際のところ

コマンドを実行したディレクトリで"ls -lh"を実行するケースを考えます。
ほぼ、サンプルスクリプト通りです。

const spawn = require('child_process').spawn;
const ls = spawn('ls', ['-lh', './']);

ls.stdout.on('data', (data) => {
  console.log(`stdout: \n${data}`);
});

ls.stderr.on('data', (data) => {
  console.log(`stderr: \n${data}`);
});

ls.on('close', (code) => {
  console.log(`child process exited with code ${code}`);
});

実行結果は以下の通り。

stdout: 
total 24
-rw-r--r--  1 shuzo_kino  staff   1.5K  2 15 23:11 app.js
drwxr-xr-x  3 shuzo_kino  staff   102B  2  7 20:55 data
drwxr-xr-x  6 shuzo_kino  staff   204B  2  9 22:27 node_modules
-rw-r--r--  1 shuzo_kino  staff   303B  2  9 22:27 package.json
-rw-r--r--  1 shuzo_kino  staff   322B  2 16 23:19 spawn.js
drwxr-xr-x  3 shuzo_kino  staff   102B  2  9 22:23 views

child process exited with code 0

ここでのcodeとは"exit code"の事で、問題なく終了すれば0を返します。
0以外ならエラーです。
色々リスト化されていますが、気をつけなければならないアプリ固有の問題以外は捨て置いてよいようです。
Work the Shell - Understanding Exit Codes | Linux Journal