LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

Там и не должно быть никаких ошибок, повторяю. Ещё раз, POLLHUP это разновидность POLLIN. Он, как и POLLIN, означает, что следующий вызов recv/read не будет блокироваться.

Мне кажется ты считаешь что revents это цельное числовое поле, которое надо проверять целиком. Нет, это не так. Смотри в нём только те флаги, которые тебе нужны. POLLOUT - значит в сокет можно что-то отправить. POLLIN/POLLHUP - значит можно что-то прочитать (во втором случае - прочитается 0 байт, признак EOF). POLLERR - можно посмотреть ошибку. Никак рассуждать на тему «почему POLLOUT и POLLHUP вместе» не следует, эти флаги никак друг с другом не связаны и сообщают о независимых признаках.

Исправление firkax, :

Там и не должно быть никаких ошибок, повторяю. Ещё раз, POLLHUP это разновидность POLLIN. Он, как и POLLIN, означает, что следующий вызов recv/read не будет блокироваться.

Мне кажется ты считаешь что revents это цельное числовое поле, которое надо проверять целиком. Нет, это не так. Смотри в нём только те флаги, которые тебе нужны. POLLOUT - значит в сокет можно что-то отправить. POLLIN/POLLHUP - значит можно что-то прочитать (во втором случае - прочитается 0 байт, признак EOF). POLLERR - можно посмотреть ошибку, но в целом ничего не сломается если ты его будешь считать вариантом POLLOUT (send тебе ту же ошибку вернёт). Никак рассуждать на тему «почему POLLOUT и POLLHUP вместе» не следует, эти флаги никак друг с другом не связаны и сообщают о независимых признаках.

Исходная версия firkax, :

Там и не должно быть никаких ошибок, повторяю. Ещё раз, POLLHUP это разновидность POLLIN. Он, как и POLLIN, означает, что следующий вызов recv/read не будет блокироваться.

Мне кажется ты считаешь что revents это цельное числовое поле, которое надо проверять целиком. Нет, это не так. Смотри в нём только те флаги, которые тебе нужны. POLLOUT - значит в сокет можно что-то отправить. POLLIN/POLLHUP - значит можно что-то прочитать (во втором случае - прочитается 0 байт, признак EOF). Никак рассуждать на тему «почему POLLOUT и POLLHUP вместе» не следует, эти флаги никак друг с другом не связаны и сообщают о независимых признаках.