如何在我的代码内部将标准输出通过管道传输到外部应用程序? 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() 调用一起使用。
工作得很好。
谢谢
我目前正在编写一个 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() 调用一起使用。
工作得很好。
谢谢