child_process 的 Node JS 生成

问题描述 投票:0回答:1

我正在生成一个命令来使用

mpg123
播放音频流,效果很好。我公开了一种终止进程的方法,该方法也运行良好,但我不知道如何从上述命令中获取输出。

子进程上没有触发任何事件

stdout
,按照文档它应该可以工作 - 这里可能是什么问题?

我发现的一个解决方案是将

stdio
spawn
属性设置为
inherit
,但随后
spawn
返回 null,这并不理想,因为我无法创建一个句柄来稍后杀死它。

我在 Node 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);
  }
};
javascript node.js spawn raspberry-pi-zero
1个回答
1
投票

由于某种原因,

mpg123
stderr
上输出其数据,而不是在
stdout
上。进行切换就像一个魅力,想想吧。

© www.soinside.com 2019 - 2024. All rights reserved.