Как и во многих функциях в Node, возвращаемое значение фактически не возвращается самим вызовом функции, а вместо этого передается обратному вызову, который передается как последний аргумент функции. Такая конструкция позволяет основному циклу Node выполнять другие задачи во время выполнения дочернего процесса.
Если вы просто хотите распечатать вывод stdout
дочернего элемента, вы должны сделать следующее:
var exec = require('child_process').exec;
exec('vim', function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
});
Если вы также хотите вывести stderr и код завершения процесса, попробуйте это:
exec('vim', function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
console.log('exit code:', error ? error.code : 0);
});
Также обратите внимание, что exec()
- это просто удобная оболочка для spawn()
, которая предлагает гораздо более мощный интерфейс и позволяет вам использовать потоки для stdin
, stdout
и stderr
.
Этот пример был взят из документации узла здесь и немного изменен.