Альтернатива mkfifo - PullRequest
       7

Альтернатива mkfifo

2 голосов
/ 23 октября 2010

У меня есть процесс, который постоянно требует записи информации.Кроме того, существует второй процесс, который иногда подключается к «информационному каналу» процесса записи и должен считывать информацию, которая записана, поскольку она подключена.Этот процесс также может несколько раз отключаться и повторно подключаться.

В настоящее время я реализую это с помощью именованного канала, используя mkfifo () в моей программе на c ++.К сожалению, если я вызываю open () для fifo, он блокируется, пока процесс не откроет fifo для чтения.Это вполне нормально для именованных каналов, но мне нужно, чтобы эта команда открытия была неблокирующей.

Знаете ли вы альтернативу mkfifo в этом случае?

Генрих

Ответы [ 3 ]

1 голос
/ 23 октября 2010

Вы можете использовать сокеты Unix-домена или обычные сокеты TCP на интерфейсе обратной связи.

0 голосов
/ 27 октября 2010

Я наконец-то использовал очередь сообщений Unix, Reader и Writer могут быть запущены полностью независимо, и все может быть выполнено без блокировки

0 голосов
/ 23 октября 2010

Вы можете использовать общую память или mmap.Он должен содержать смещение к самым старым данным, а блок памяти для данных

fifo ограничен 64 КБ (зависит от распределения и некоторых настроек).

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