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

pfo*_*pfo 5 ipc environment-variables parent-child child-process node.js

我想在NodeJS中启动子进程并将其输出保存到变量中.以下代码将其赋予stdout:

require("child_process").execSync("echo Hello World", {"stdio": "inherit"});
Run Code Online (Sandbox Code Playgroud)

我有一些与此代码类似的内容:

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

test应该是的价值Hello World.

哪个不起作用,因为"test"它不是有效的stdio值.

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

Aur*_*001 6

execSync是一个函数,它返回您传入的命令的标准输出,因此您可以使用以下代码将其输出存储到变量中:

var child_process = require("child_process");
var test = child_process.execSync("echo Hello World");
console.log(test);
// => "Hello World"
Run Code Online (Sandbox Code Playgroud)

请注意,如果进程的退出代码非零,则会抛出错误.另外,请注意您可能需要使用,test.toString()因为child_process.execSync可以返回Buffer.

  • 谢谢您的回答!我想补充说我必须使用`test.toString()`,否则输出是`<Buffer 48 65 6c 6c 6f 20 57 6f 72 6c 64 0a>`. (6认同)