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