【问题标题】:Saving the output of a child process in a variable in the parent in NodeJS将子进程的输出保存在 NodeJS 中父进程的变量中
【发布时间】:2017-04-21 10:42:24
【问题描述】:

我想在 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" 不是有效的 stdio 值。

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

【问题讨论】:

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


    【解决方案1】:

    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(),否则输出为<Buffer 48 65 6c 6c 6f 20 57 6f 72 6c 64 0a>
    • @pfo 会注意到这一点 - 我认为它因版本而异,因为我的本地副本没有这样做。
    • 如果它存在一个非零退出代码,你怎么做?
    猜你喜欢
    • 2021-11-06
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    相关资源
    最近更新 更多