如何在我的代码内部将标准输出通过管道传输到外部应用程序? C

How to pipe stdout to external app, internally within my code? C

我目前正在编写一个 udp 客户端,它只是在指定端口上侦听发往特定多播组的数据包。

最后,我按以下方式将输入打印到标准输出:

write(STDOUT_FILENO, buffer, num_of_bytes);

并按以下方式执行程序:

./udp_listen 224.10.10.10 4567 | mpg321 -

这样所有输出都通过管道传输到 mpg321 应用程序,该应用程序将字节流作为音乐播放。

上面的实现当然让我对我的程序有点 "lose control",因为它打开 mpg321 应用程序并播放。 我想避免这种情况,并以某种方式直接在我的程序中将 write(....) 通过管道传输到 mpg321 中。

如何才能做到这一点?我正在用 C 编写代码。

谢谢。

感谢@kaylum 提供我正在寻找的答案。

我使用 popen 命令启动 mpg321 ,并将其 stderr 输出重定向到文件。

之后我使用 fileno() 方法获取文件描述符编号, 与 write() 调用一起使用。

工作得很好。

谢谢