Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: RedPeasantОтветов: 2

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

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

c++ipcunixnamed-pipes

Ответы

Ответ 1 · рейтинг 5 · Jonathan Leffler

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

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

Ответ 2 · jcomeau_ictx

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы