LINUX.ORG.RU

read after select


0

0

Странная ситуация у меня. Сервер рвет tcp-соединение, strace показывает следующее

select(16, [0 3], [], [3], NULL) = 1 (in [3]) recv(3, "", 8192, 0) = 0

Такое вообще возможно? Как так получается, что select вернул 3 дескриптор а read из него прочитать не может ничего?

★★

> Такое вообще возможно? Как так получается, что select вернул 3 дескриптор а read из него прочитать не может ничего?

Таоке получается потому, что кое-кто не читает man'ы. Поэтому для начала нужно прочесть man select, где сказано: "Отслеживаются три независимых набора дескрипторов. Те, что перечислены в параметре readfds, будут отслеживаться на предмет появления новых символов, доступных для чтения (говоря точнее, операция чтения не будет блокирована -- в частности, файловый дескриптор находится в конце файла);"

Соединение было закрыто, операция чтения не будет блокирована, все честно

no-dashi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.