Как ограничить количество пользователей fifo?

У меня есть две программы - одна из них генерирует некоторые данные и помещает их в FIFO, а другая читает эти данные из FIFO и что-то с ними делает. Как ограничить количество программ чтения? Я думаю об ограничении размера FIFO или проверке количества данных внутри, но я не нашел ничего интересного. Спасибо за вашу помощь.

2 ответа

Решение

Канал fifo - это системный файл, и поэтому вы можете контролировать доступ к нему только обычными средствами (владение и разрешения). Но смотри также man flock, Блокировка файлов в Linux не применяется, т. Е. Вы можете ее игнорировать, но если вы реализуете свои читатели, чтобы подчиняться блокировкам файлов, то проблема решена.

Итак: если проблема заключается в нежелательном и навязчивом доступе, используйте владение и разрешения, чтобы предотвратить это. В противном случае используйте блокировки файлов.

Проверьте количество ссылок FIFO с помощью (f)stat(). Если оно превысит какой-то лимит, который вы решите, заставить программу чтения отказаться от его открытия?

Другие вопросы по тегам