Linux: проверка, не поврежден ли сокет / канал без выполнения read () / write ()

У меня есть простой фрагмент кода, который периодически записывает данные в переданный ему fd. Скорее всего, fd будет конвейером или сокетом, но потенциально может быть чем угодно. Я могу определить, когда сокет / канал закрыт / сломан всякий раз, когда я пишу () в него, так как я получаю ошибку EPIPE (я игнорирую SIGPIPE). Но я не пишу на него все время, и поэтому могу долгое время не обнаруживать закрытый сокет. Мне нужно отреагировать на закрытие как можно скорее. Есть ли способ проверить fd без использования write ()? Тогда я мог бы делать это периодически, если я ничего не пишу.

7
задан animuson 23 September 2012 в 16:01
поделиться