NodeJSで新しいプロセスを生成する必要があります。そのstderrはstdoutにリダイレクトする必要があります(bashの2>&1
と同じです)。NodeJSで新しいプロセスを生成し、stderrをstdoutにリダイレクトする方法は?
proc.js
var child_process = require('child_process');
var opt = {stdio: ['ignore', 'pipe', 'pipe']};
var proc = child_process.spawn('./myscript', [], opt);
proc.stderr.pipe(proc.stdout);
proc.stdout.on('data', function (buf) {
console.log('stdout', buf.toString());
});
proc.on('error', function (...args) {
console.log('error', args);
});
proc.on('exit', function (code, signal) {
console.log('exit', code, signal);
});
proc.on('close', function (code, signal) {
console.log('close', code, signal);
});
のMyScript
#!/bin/bash
echo 111
echo 222 >&1
echo 333 >&2
echo 444
残念ながら、これは動作しません。出力にははありません。
stdout 111
222
444
exit 0 null
close 0 null
実用的な観点から...なぜですか? Linuxリダイレクトではなく、スクリプト内でこれを制御したいのはなぜですか? – Paul