保存子进程中的变量在父的输出的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
。
谢谢您的回答!我想补充一点,我必须使用'test.toString()',否则输出是''。 –
pfo
@pfo会注意到这一点 - 我认为它随版本而变化,因为我的本地副本没有这样做。 – Aurora0001