>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' сразу,
>хотя читать и нечего. Что
>я не так делаю!? Замумукался
>уже!
Neskol'ko izvraschenniy kod nado skazat'. I select zdes' ni prichem - pered fflush ili posle postav'te close(f), i stroki
> else
> printf("select()!=1\n");
zamenite na
else {
printf("select()!=1\n");
break;
}
A to on teper' neprerivno select()!=1 vidavat' budet.
|