The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Странное поведение select(2), !*! nd, 20-Янв-02, 18:10  [смотреть все]
select(2) не работает в коде типа этого:
...
char buf[256];
int len;
fd_set set;
int f=open("test", O_RDONLY);
if(f==-1) { perror("test"); exit(1); }
while(1)
{ FD_ZERO(&set);
  FD_SET(f, &set);
  if(select(f+1, &set, NULL, NULL, NULL)==1)
  { if((len=read(f, buf, 256))!=0)
      write(1, buf, len);
    else
    { printf("select()=1, but read()=0!\n");
      fflush(stdout);
    }
  }
  else
    printf("select()!=1\n");
}
...

В результате выполнения программа выдаёт сначала содержимое файла test (как и должно быть), а вот потом начинает выдавать "select()=1, but read()=0!", причем постоянно и без пауз, т.е. select(2) возвращает '1' сразу, хотя читать и нечего. Что я не так делаю!? Замумукался уже!




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

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