2012-05-05 48 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,那麼當我運行越來越多的閱讀器時它不會改變。 –