The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
read() после select(), !*! John Lepikhin, 01-Сен-09, 13:12  [смотреть все]
Кусочек вывода strace:

select(1045, [16 1044], [1040], [], {0, 148319}) = 2 (in [16 1044], left {0, 148319})
read(16, 0xbf85241c, 4096)              = -1 EAGAIN (Resource temporarily unavailable)

select говорит, что на двух сокетах (16 и 1044) есть готовые данные для чтения. Сразу же после этого, из 16-го сокета пытаемся читать и получаем отказ, что данных нет. Как такое может быть?

  • read() после select(), !*! Vlad Lazarenko, 16:31 , 01-Сен-09 (1)
    >Кусочек вывода strace:
    >
    >select(1045, [16 1044], [1040], [], {0, 148319}) = 2 (in [16 1044],
    >left {0, 148319})
    >read(16, 0xbf85241c, 4096)          
    >    = -1 EAGAIN (Resource temporarily unavailable)
    >
    >select говорит, что на двух сокетах (16 и 1044) есть готовые данные
    >для чтения. Сразу же после этого, из 16-го сокета пытаемся читать
    >и получаем отказ, что данных нет. Как такое может быть?

    А Вы FD_ISSET проверьте, чтобы наверняка.

  • read() после select(), !*! svn, 12:46 , 02-Сен-09 (2)
    >select говорит, что на двух сокетах (16 и 1044) есть готовые данные
    >для чтения.

    select говорит что операция чтения/записи не будет заблокирована! А вовсе не то что данные будут прочитаны или записаны.

    В твоём случае, похоже на конец файла/закрытия сокета. То есть, select тебе предлагает прочитать, чтобы узнать что это конец.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру