将子进程的输出保存在NodeJS中父级的变量中

时间:2016-12-06 17:29:28

标签: node.js environment-variables parent-child ipc child-process

我想在NodeJS中启动子进程并将其输出保存到变量中。以下代码将其提供给stdout:

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值。

也许这可以使用环境变量,但是我没有找到如何在子进程中修改它们,结果仍然可以看到父进程。

1 个答案:

答案 0 :(得分:6)

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