У меня есть сигнальный сокет для чтения из select (), но данные не поступают с помощью recv call (), вместо этого он возвращает -1 с errno == EAGAIN.
Я могу допустить, что никакой другой поток не касается сокета.
Я считаю, что это неправильное поведение. Если происходит последующее закрытие с другой стороны, я могу ожидать возврата значения 0 (изящное закрытие) или другого кода ошибки от recv, но не EAGAIN, потому что, по моему мнению, это означает, что данные будут поступать в будущем.
Я нашел предыдущую ветку о проблеме здесь , но без решения.
Такое поведение случается со мной в Ubuntu Linux Oneric или других последних дистрибутивах Linux, затем информация из ссылки размещена здесь
То, что это будет исправлено в ядре, неверно для ядра 3.0.0 или последней версии 2.6. x
Кто-нибудь знает, почему это происходит и как избежать такого нежелательного поведения?