2012-05-05 49 views
0

我有两个程序 - 其中一个生成一些数据并将它们放入FIFO中,另一个从FIFO中读取此数据并与它们一起执行某些操作。如何限制阅读程序的数量?我想过限制FIFO的大小或检查内部有多少数据,但我没有发现任何有趣的事情。谢谢你的帮助。如何限制fifo的用户数量?

回答

1

一个fifo管道是一个系统文件,因此您可以通过常用方式(所有权和权限)来控制对它的访问。但也请参阅man flock。文件锁定在Linux上是不可执行的,也就是说,你可以忽略它,但是如果你实现你的读者服从文件锁定,那么问题就解决了。

因此:如果问题是有害和侵入访问,请使用所有权和权限来防止此问题。否则,请使用文件锁定。

0

用(f)stat()检查FIFO的链接数。如果它高于你决定的某个限制,让阅读程序拒绝打开它?

+0

我认为st_nlink不是我们正在寻找的东西。在这种情况下,struct stat的哪个字段是有用的? –

+0

@WojciechReszelewski:st_nlink就是我想到的,是的。你为什么认为它不适合所述的目的? – janneb

+0

如果我在循环中运行fstat并打印st_nlink,那么当我运行越来越多的阅读器时它不会改变。 –