child_process 节点 JS 生成
Node JS spawn of child_process
我正在生成一个命令来使用 mpg123
播放音频流,效果很好。我也公开了一种终止进程的方法,该方法也很有效,但是我不知道如何从上述命令中获取输出。
没有在子进程上触发任何事件 stdout
,根据文档它应该可以工作 - 这里可能是什么问题?
我找到的一个解决方案是将 spawn
的 stdio
属性 设置为 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);
}
};
出于某种原因,mpg123
在 stderr
上输出其数据,而不是 stdout
。让开关像魅力一样工作,想想看。