Ответ 1
Смотрите документацию здесь. Очень важно, как передавать аргументы командной строки. Обратите внимание, что вы можете использовать exec
или spawn
. spawn
имеет конкретный аргумент для аргументов командной строки, а при exec
вы просто передадите аргументы как часть выполняемой командной строки.
Непосредственно из документации, с пояснениями комментариев inline
var util = require('util'),
spawn = require('child_process').spawn,
ls = spawn('ls', ['-lh', '/usr']); // the second arg is the command
// options
ls.stdout.on('data', function (data) { // register one or more handlers
console.log('stdout: ' + data);
});
ls.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
ls.on('exit', function (code) {
console.log('child process exited with code ' + code);
});
В то время как с exec
var util = require('util'),
exec = require('child_process').exec,
child;
child = exec('cat *.js bad_file | wc -l', // command line argument directly in string
function (error, stdout, stderr) { // one easy function to capture data/errors
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
Наконец, обратите внимание, что exec буферизирует вывод. Если вы хотите передать поток обратно клиенту, вы должны использовать spawn
.