Читать (2) на Tun FD вернул ноль

В моем приложении был создан интерфейс Tun, и процесс продолжает читать связанный fd с read(2) в цикле select(2). Но когда я отлаживал проблему в приложении, я обнаружил, что в некоторые моменты операция read(2) в дескрипторе файла Tun может возвращать ноль. Возможно ли это и в каком состоянии это может произойти?

Заранее спасибо. древесный

1 ответ

Вот информация из справочной страницы на чтение (2) нажмите здесь

Возвращаемое значение

В случае успеха возвращается количество прочитанных байтов (ноль указывает на конец файла), и позиция файла увеличивается на это число. Не является ошибкой, если это число меньше числа запрошенных байтов; это может произойти, например, потому что на самом деле сейчас доступно меньше байтов (может быть, потому что мы были близки к концу файла, или потому что мы читаем из канала, или из терминала), или потому что read() была прервана сигнал. При ошибке возвращается -1, и errno устанавливается соответствующим образом. В этом случае не указывается, изменяется ли позиция файла (если есть).

Другие вопросы по тегам