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

问题描述:

我想给的NodeJS启动一个子进程,并保存其输出到一个变量。下面的代码给它到stdout:保存子进程中的变量在父的输出的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"是不是一个有效的标准输入输出值。

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

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