【问题标题】:made fifo file without using mkfifo or mknod不使用 mkfifo 或 mknod 制作 fifo 文件
【发布时间】:2015-02-03 04:15:41
【问题描述】:

我尝试使用 vlc 和 mpg123 播放器通过 gnuradio 流式传输 mp3 音乐。按照这个网站的例子 http://www.opendigitalradio.org/Simple_FM_transmitter_using_gnuradio

命令是:

$ mkfifo stream_32k.fifo
$ mpg123 -r32000 -m -s  http://maxxima.mine.nu:8000 >stream_32k.fifo

使用我自己的 mp3 流,我按照示例进行操作,但是有一次我忘记放了

$ mkfifo stream_32k.fifo

到终端,而不是只输入

$ mpg123 -r32000 -m -s  http://localhost:8080/mp3 >stream_32k.fifo

直接到终端。结果是一个未突出显示的 .fifo 文件(如使用 mkfifo 创建的文件)

与 gnuradio 一起使用时,使用 mkfifo 制作的 fifo 文件只能播放一次,并且其大小将始终返回 0 字节。

虽然我在不使用 mkfifo 的情况下意外创建的那个会保留字节很长时间,而且我可以随时访问它,这对我来说更有益。

这样制作fifos有缺点吗?也有人可以告诉我我实际上做了什么吗?

非常感谢!

【问题讨论】:

    标签: fifo mkfifo


    【解决方案1】:

    您刚刚创建了一个常规文件。因此,它将字节保留在磁盘上,真正的 FIFO 与永久磁盘存储无关,它本质上是内存中的一个缓冲区,您可以给它一个“磁盘名称”,以便面向文件的命令可以使用它。缺点是当你在写一个永久的磁盘文件时,你不能同时从中读取(一般来说,这取决于编写程序的实际写入方式,但你不能依赖它)。

    如果您认为文件名中包含 .fifo 使其成为 FIFO,那么这是不对的。 mkfifo 实用程序使文件名附加到 FIFO。

    如果您想同时保留文件和播放流,可以使用tee 之类的实用程序:

    mkfifo stream.fifo
    mpg123 ...... | tee saved_stream.mp3 > stream.fifo
    

    然后像往常一样从 stream.fifo 播放。 Tee 将“捕获”通过它的字节并将它们保存到磁盘。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 2021-12-09
      • 1970-01-01
      相关资源
      最近更新 更多