child_process 节点 JS 生成

Node JS spawn of child_process

我正在生成一个命令来使用 mpg123 播放音频流,效果很好。我也公开了一种终止进程的方法,该方法也很有效,但是我不知道如何从上述命令中获取输出。

没有在子进程上触发任何事件 stdout,根据文档它应该可以工作 - 这里可能是什么问题?

我找到的一个解决方案是将 spawnstdio 属性 设置为 inherit,然后 spawn returns 为空,这并不理想,因为我无法创建句柄以稍后将其杀死。

我 运行 在节点 10.24 的 Pi Zero 上。

export const streamFactory = (cb: (data: string) => void) => {
  try {
    const st = spawn("mpg123", [configManager.getStreamUrl()]);

    st.stdout.on("data", (data) => {
      console.log(data);
      cb(data);
    });

    return {
      close: () => {
        st.kill("SIGINT");
      },
    };
  } catch (e) {
    console.log(e);
  }
};

出于某种原因,mpg123stderr 上输出其数据,而不是 stdout。让开关像魅力一样工作,想想看。