Обнаружить отключение от именованного канала в Linux

Я работаю над проектом C ++ в Linux, где две программы взаимодействуют по именованному каналу.

Теперь я хочу обнаружить в одной программе, если другая отключается от именованного канала.

Есть ли способ обнаружить отключение?

редактировать

Я открыл fifo в режиме O_RDWR — по этой причине select не реагировал на отключение. Теперь я открываю fifo с помощью (O_RDONLY | O_NDELAY) и все работает нормально.

0

Решение

Это так же, как в TCP / IP. Вы должны попытаться прочитать данные, если это не удается с 0, канал закрыт.

читать и читать:

Эти вызовы возвращают количество полученных байтов или -1, если произошла ошибка
произошло. Возвращаемое значение будет 0, когда узел выполнил
упорядоченное отключение
.

Существует также SIGPIPE сигнал. Он будет отправлен, когда вы попробуете написать на сломанную трубу — трубу без читателей.

1

Другие решения

Если read на одном конце возвращается с 0 байтами, канал отключен.

1

По вопросам рекламы [email protected]