2

Я хотел бы запустить дочерний процесс в NodeJS и сохранить его вывод в переменную. Следующий код дает его на стандартный вывод:Сохранение вывода дочернего процесса в переменной родителя в NodeJS

require("child_process").execSync("echo Hello World", {"stdio": "inherit"}); 

У меня есть что-то в виду, что подобное этому коду:

var test; 
require("child_process").execSync("echo Hello World", {"stdio": "test"}); 
console.log(test); 

Значение test должен был быть Hello World.

Не работает, так как "test" не является действительным значением stdio.

Возможно, это возможно с использованием переменных среды, однако я не узнал, как их модифицировать в дочернем процессе, и результат остается видимым для родителя.

ответ

3

execSync это функция, которая возвращает стандартный вывод команды вы передаете, так что вы можете сохранить свой вывод в переменную со следующим кодом:

var child_process = require("child_process"); 
var test = child_process.execSync("echo Hello World"); 
console.log(test); 
// => "Hello World" 

Имейте в виду, что это вызовет ошибку если код выхода процесса отличен от нуля. Также обратите внимание, что вам может потребоваться использовать test.toString(), так как child_process.execSync может вернуть Buffer.

+4

Благодарим вас за ответ! Я хотел бы добавить, что мне пришлось использовать 'test.toString()', иначе выход был ''. – pfo

+0

@pfo это заметит - я думаю, что это зависит от версии, так как моя локальная копия этого не делала. – Aurora0001