Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何限制fifo的数量';s用户?_C_Unix_Fifo - Fatal编程技术网

C 如何限制fifo的数量';s用户?

C 如何限制fifo的数量';s用户?,c,unix,fifo,C,Unix,Fifo,我有两个程序-其中一个是生成一些数据并将其放入FIFO,另一个是从FIFO读取这些数据并对其进行处理。如何限制阅读节目的数量?我曾经考虑过限制FIFO的大小或者检查里面有多少数据,但是我没有发现任何有趣的事情。谢谢你的帮助 使用(f)stat()检查FIFO的链接计数。如果超出了您决定的限制,请让读取程序拒绝打开它?fifo管道是一个系统文件,因此您可以控制对它的访问的唯一方法是通过通常的方式(所有权和权限)。但也可参见人类群体。文件锁定在linux上是不可强制执行的,也就是说,您可以忽略它,但

我有两个程序-其中一个是生成一些数据并将其放入FIFO,另一个是从FIFO读取这些数据并对其进行处理。如何限制阅读节目的数量?我曾经考虑过限制FIFO的大小或者检查里面有多少数据,但是我没有发现任何有趣的事情。谢谢你的帮助

使用(f)stat()检查FIFO的链接计数。如果超出了您决定的限制,请让读取程序拒绝打开它?

fifo管道是一个系统文件,因此您可以控制对它的访问的唯一方法是通过通常的方式(所有权和权限)。但也可参见
人类群体
。文件锁定在linux上是不可强制执行的,也就是说,您可以忽略它,但若您实现读取器以遵守文件锁定,那个么问题就解决了


因此:如果问题是不需要的和侵入性的访问,请使用所有权和权限来防止这种情况。否则,请使用文件锁。

我认为Stu nlink不是我们要找的。在这种情况下,struct stat的哪个字段是有用的?@WojciechReszelewski:st_nlink是我想的,是的。为什么您认为它不适合指定的用途?如果我在循环中运行fstat并打印st_nlink,当我运行越来越多的读卡器时,它不会改变。@WojciechReszelewski:是的,对于每个读卡器,您必须使用link()创建一个到fifo的唯一链接(例如,在名称中包含主机名和PID),然后使用(f)stat()检查链接计数。