Удаление именованных каналов при закрытии

Я использую именованный канал для связи между сценарием PHP и демоном C ++ в Linux. Демон сидит и наблюдает за конвейером, обрабатывает команды при вызове сценария и генерирует их. Система представляет собой небольшое встроенное устройство, и единственное, что на нем работает, - это веб-сервер и демон.

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


person RedPeasant    schedule 14.06.2011    source источник


Ответы (2)


Удалить FIFO аккуратно и аккуратно, но не обязательно. В частности, при перезапуске системы FIFO будет пустым.

Итак, лучше всего проектировать свои программы так, чтобы они принимали наличие FIFO и создавали его, если он отсутствует. Если они закрываются чисто, то хорошо удалить FIFO.

person Jonathan Leffler    schedule 14.06.2011
comment
Спасибо. Проверяю, когда запускаю и делаю трубу, нет ли ее. Я добавлю unlink () в деструктор, чтобы очистить, если программа завершится нормально и назовет это хорошим. - person RedPeasant; 14.06.2011

Я не использовал их годами, но примерно на 80% уверен, что вы можете оставить узлы на месте навсегда. И они будут пустыми при загрузке, потому что данные хранятся в структурах данных ядра.

person jcomeau_ictx    schedule 14.06.2011