C 如何限制fifo的数量';s用户?
我有两个程序-其中一个是生成一些数据并将其放入FIFO,另一个是从FIFO读取这些数据并对其进行处理。如何限制阅读节目的数量?我曾经考虑过限制FIFO的大小或者检查里面有多少数据,但是我没有发现任何有趣的事情。谢谢你的帮助 使用(f)stat()检查FIFO的链接计数。如果超出了您决定的限制,请让读取程序拒绝打开它?fifo管道是一个系统文件,因此您可以控制对它的访问的唯一方法是通过通常的方式(所有权和权限)。但也可参见C 如何限制fifo的数量';s用户?,c,unix,fifo,C,Unix,Fifo,我有两个程序-其中一个是生成一些数据并将其放入FIFO,另一个是从FIFO读取这些数据并对其进行处理。如何限制阅读节目的数量?我曾经考虑过限制FIFO的大小或者检查里面有多少数据,但是我没有发现任何有趣的事情。谢谢你的帮助 使用(f)stat()检查FIFO的链接计数。如果超出了您决定的限制,请让读取程序拒绝打开它?fifo管道是一个系统文件,因此您可以控制对它的访问的唯一方法是通过通常的方式(所有权和权限)。但也可参见人类群体。文件锁定在linux上是不可强制执行的,也就是说,您可以忽略它,但
人类群体
。文件锁定在linux上是不可强制执行的,也就是说,您可以忽略它,但若您实现读取器以遵守文件锁定,那个么问题就解决了
因此:如果问题是不需要的和侵入性的访问,请使用所有权和权限来防止这种情况。否则,请使用文件锁。我认为Stu nlink不是我们要找的。在这种情况下,struct stat的哪个字段是有用的?@WojciechReszelewski:st_nlink是我想的,是的。为什么您认为它不适合指定的用途?如果我在循环中运行fstat并打印st_nlink,当我运行越来越多的读卡器时,它不会改变。@WojciechReszelewski:是的,对于每个读卡器,您必须使用link()创建一个到fifo的唯一链接(例如,在名称中包含主机名和PID),然后使用(f)stat()检查链接计数。