|
|
ru.unix- RU.UNIX ---------------------------------------------------------------------- From : Mike E. Matsnev 2:5020/400 10 Aug 2000 20:13:31 To : All Subject : Re: Perl/Unix bug? select() возвращает странные значения -------------------------------------------------------------------------------- Alexey Samsonov <klum@nm.ru> wrote: > Столкнулся с загадочным поведением функции select (RBITS, WBITS, EBITS, > TIMEOUT) > при запуске Perl-скрипта на платформе Unix. > Ситуация следующая: > 1.Создаем несколько сокетов (PF_INET, SOCK_STREAM, getprotobyname('tcp')) в > non-blocking режиме через ioctl() > 2. Коннектимся к нескольким разным портам на ОДHОМ хосте > 3. Создаем бит-вектор на проверку готовности всех сокетов на запись (т.е. > удачный коннект) > и вызываем select(undef, $bit_vec_write, undef, $timeout) > И вот, если ХОТЯ БЫ ОДИH порт на на этом хосте отвечает, то select() > возвращает установленные биты ДЛЯ ВСЕХ СОКЕТОВ относящихся к этому хосту. > Под win32(perl 5.6.0) этой проблемы нет, бит записи выставляется только для > актуального порта. Что посоветуете? Делать еще раз connect() и смотреть errno, если EISCONN - значит готов, если EALREADY ждем дальше. /Mike --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix/10122775050f0.html, оценка из 5, голосов 10
|