Как проверить файловый дескриптор в c?
Пишу сервер. когда клиент отключается, epoll возвращает этот файловый дескриптор. но как узнать что этот дескриптор работает или закрыл соединение. у меня на этапе чтение с него процесс останавливается и ждет новых данных, но этот из этого файла не будет данных, клиент просто отключился. как проверить на то, отключился ли клиент или нет? Это в си программировании.
Ответы (1 шт):
Раз Вы используете выражение "закрыл соединение", то серверный сокет должен был создаваться с флагом SOCK_STREAM. В таком случае:
Если отправитель вызвал функцию shutdown (раздел 16.2), чтобы завершить передачу данных, или если протокол поддерживает завершение передачи по умолчанию и отправитель закрыл свой сокет, то функция recv вернет значение 0 после получения всех данных.
"UNIX Профессиональное программирование". У. Ричард Стивенс, 2007. стр. 667