Linux: тайм-аут при открытии именованного канала для записи - PullRequest
4 голосов
/ 08 марта 2012

У меня один процесс записывает в другой через именованный канал.Возможно, что процесс чтения будет плохо себя вести и не откроет канал для чтения.Если это произойдет, мой писательский процесс с хорошим поведением зависнет при вызове open ().Я хочу, чтобы писатель мог тайм-аут при открытии канала, чтобы он мог очистить и продолжить работу, если читатель не открыл конец во времени.Неблокирующее открытие () немедленно возвращает ошибку.

Ответы [ 2 ]

3 голосов
/ 08 марта 2012

Если это вариант, используйте доменные сокеты unix для такого сценария. Из-за семантики FIFO это неудобный способ сделать это, и в любом случае вы, вероятно, столкнетесь с проблемами после открытия. И этот дизайн не будет выходить за рамки одного клиента, если это станет необходимым. Возможно, вы сможете применить свою волю к FIFO в краткосрочной перспективе, но я подозреваю, что вы пожалеете об этом.

Гнезда гораздо более естественны для этого. Ваш сокет прослушивания прекрасно вписывается в ваш существующий опрос (), клиент подключается, писатель сбрасывает свои данные, оба конца отключаются, и все довольны. Без суеты, без суеты.

0 голосов
/ 08 марта 2012

В вашем процессе записи откройте канал в режиме чтения-записи, что должно предотвратить его зависание

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...