2011-08-19 3 views
1

Использование названной трубы несколько раз очень удобно, например mkfifo file.fifo.Как использовать постоянный именованный канал под linux?

но файл.fifo не является постоянным, если компьютер перезагружен или процесс записи сценария разбился, я ничего не могу получить из трубы. так, есть ли какие-либо методы, позволяющие хранить данные на диске на диске, а не в памяти?

спасибо.

+1

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

ответ

2

Простейшим решением является использование простых файлов для хранения данных. Например, и используйте канал (или аналогичный), чтобы уведомить, например, о новых данных. Конечно, вы должны позаботиться о межпроцессной блокировке.

Или вы можете использовать «очереди сообщений» (см. mqueue.h). Они сохраняются в случае сбоя процесса, но не при перезагрузке системы.

Или вы можете использовать стороннюю библиотеку, которая реализует «постоянные очереди сообщений». См. this similar question.

Смежные вопросы