我想在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值。
也许这可以使用环境变量,但是我没有找到如何在子进程中修改它们,结果仍然可以看到父进程。
答案 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
。