有没有办法在shell中创建非阻塞/异步命名管道或类似的东西?以便程序可以将行放入其中,这些行将留在RAM中,当某个程序从管道中读取某些行时,将保留它没有读取的内容在FIFO中。很可能会有程序同时写入和读取此FIFO。起初我认为可能可以使用文件来实现,但在搜索了一段时间网络之后,似乎从文件同时读取和写入不会有好处。命名管道几乎可以工作,只是存在两个问题:首先,如果另一端没有人,则会阻止读取/写入;其次,即使我让写入被阻止并设置两个进程以在没有人读取时写入 pipe,通过尝试使用每个进程写入一行,然后尝试
编辑:也许可以使用一些中间程序来协助处理,充当写入者和读取者之间的中介者?
head -n 1 <fifo>
,我只能得到一个我需要的行,但是两个写入进程终止,并且第二行丢失了。有什么建议吗?编辑:也许可以使用一些中间程序来协助处理,充当写入者和读取者之间的中介者?
mkfs /dev/ram1 1048576
(如果需要,可以使用更大的数字)并将/dev/ram1
挂载到任何地方。那可能是您能够获得的最接近“非阻塞”的方式。当然,默认情况下它完全不是非阻塞的,只是非常快速(但默认情况下命名管道也不是非阻塞的)。非阻塞操作是程序需要在文件描述符上设置的内容。 - Damontee
一样,还有一个私有映射的副本。这可能会做你想要的事情。 - Damon