如何创建一个linux fifo“管道”(或东西),它不会阻止编写者和读者?

时间:2011-10-04 10:37:43

标签: linux buffer pipe

我创建了一个fifo管道

$ mkfifo pipename

现在,如果我写了一些东西,命令将不会返回,

$ echo "foo" > pipename

直到我读到它:

$ cat < pipename 
foo

此外,在写入内容之前,read命令也不会返回。

现在,我想创建一个这样的东西(实际上,也许这个东西不应该被认为是管道,而是某种缓冲区)

  • 读取命令将立即返回,无论管道中是否有东西(如果管道为空,则读取应立即返回零字节)
  • 写命令立即返回

由于

1 个答案:

答案 0 :(得分:1)

使用fifo,但写自己的读者和作家。在设置了O_NONBLOCK的情况下打开fifo,如果没有其他进程打开另一方,open将立即返回。您的写入命令将立即返回(根据请求),但数据将丢失。如果您希望数据保持不变,请使用常规文件。