【问题标题】:How do i capture child prcess stderr data in parent process?如何在父进程中捕获子进程 stderr 数据?
【发布时间】:2020-06-08 13:00:54
【问题描述】:

我想捕获写入父进程的stderr的数据。

const cluster = require('cluster');
if (cluster.isMaster) {
    const child = cluster.fork();
    cluster.workers[child.id].process.stderr.on('data',(data)=>{console.log(data});
  }
  else {
    console.error("Child data");
  }

我尝试在 master 中为子进程 stderr 添加回调。但 stderr 在父级中为空。 如何在父级中捕获“子数据”(子进程的标准错误)? 要求是使用集群节点模块并捕获console.error。我无法使用 process.send 向父级发送数据。

【问题讨论】:

    标签: node.js


    【解决方案1】:

    我更喜欢用Promise 来做这件事,所以我promisify exec 命令是这样的:

    const util = require("util");
    const exec = util.promisify(require("child_process").exec);
    
    let runCommand = async (cmd) => {
      const result = await exec(cmd)
      if (result.stdout) console.log("StdOut:",result.stdout)
      if (result.stderr) console.log("StdErr:",result.stderr)
      return result
    }
    
    runCommand("some command")
      .then( result => console.log("Finished successfully),
             reason => console.log("Failed with",reason.code"))
    

    如果返回错误(非零),则承诺将无法解决,您也可以处理拒绝。

    【讨论】:

      猜你喜欢
      • 2020-06-23
      • 1970-01-01
      • 2013-03-01
      • 2020-07-22
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      相关资源
      最近更新 更多