LINUX.ORG.RU

Почему? Вопрос по select.


0

0

FILE *infile;

int int_file; int_file=open("/var/log/squid/access.log",O_RDONLY);

infile=fdopen(int_file,"r");

fd_set rfds;

struct timeval tv;

int retval;

FD_ZERO(&rfds);

FD_SET(int_file,&rfds);

tv.tv_sec=40;

tv.tv_usec=100;

retval=select(1,&rfds,NULL,NULL,&tv);

...

Почему select не реагирует на изменение access.log

anonymous

Re: Почему? Вопрос по select.

первый параметер селекту видно кривой .. может select(20, .. надо? :)

lg ★★ ()

Re: Почему? Вопрос по select.

Так эть на простых файлах select() на возможность read должен регаировать по любому, то есть read() на обычном файле не заблокируется никогда.

Dead ★★★★ ()

Re: Почему? Вопрос по select.

А что значит "20" в первом параметре? Можно по подробнее пожалуйста.

anonymous ()
Ответ на: Re: Почему? Вопрос по select. от anonymous

Re: Re: Почему? Вопрос по select.

из man select
.......
n на единицу больше самого большого номера дескриптора из всех наборов
.......

а 20 это lg для примера написал IMHO :-)

Dead ★★★★ ()
Ответ на: Re: Re: Re: Почему? Вопрос по select. от anonymous

Re: Re: Re: Re: Почему? Вопрос по select.

Да нет же
просто нужно было делать
select(int_file+1,...

P.S. сомнения по поводу того что это будет работать с обчными файлами остаются

Dead ★★★★ ()
Ответ на: Re: Re: Re: Почему? Вопрос по select. от anonymous

Re: Re: Re: Re: Почему? Вопрос по select.

>>То есть - FD_SET(int_file+1,...? <- >>Эффект тот же. :(

Sorry.Облажался.

С обычными файлами действительно не работает.

Ткните пожалуста носом на ссылку с исходниками tail! Очень нужно.

anonymous ()

Re: Почему? Вопрос по select.

Классическая ошибка с первым параметром в сочетании с классической попыткой натравить select на файл - вдвойне классика. Каждый на эти грабли наступает, я то же по ним ходил ;)

Зачем тебе исходники tail? strace на него напусти и сам все увидишь. sleep + read помогут в большинстве случаев.

anonymous ()
Ответ на: Re: Почему? Вопрос по select. от Dead

Re: Re: Почему? Вопрос по select.

select и poll работают с любыми дескрипторами, с файлами, сокетами... Не работают только с дескрипторами, которые связаны с очердями сообщений и т. п. Вот.

OxiD ★★★★ ()
Ответ на: Re: Re: Почему? Вопрос по select. от OxiD

Re: Re: Re: Почему? Вопрос по select.

>select и poll работают с любыми дескрипторами, с файлами, сокетами... Не работают только с дескрипторами, которые связаны с очердями сообщений и т. п. Вот.

А в чем я был не прав?
Или ты хочешь попробовать отследить изменения в файле с помощью select() ? ;-)

Dead ★★★★ ()
Ответ на: Re: Re: Re: Почему? Вопрос по select. от Dead

Re: Re: Re: Re: Почему? Вопрос по select.

>>А в чем я был не прав? Или ты хочешь попробовать отследить изменения в файле с помощью select() ? ;-)

Да именно это и нужно.И если появились новые данные их нужно считать.

Попробую read + sleep.

P.S. За ссылку спасибо.

anonymous ()
Ответ на: Re: Re: Re: Re: Почему? Вопрос по select. от anonymous

Re: Re: Re: Re: Re: Почему? Вопрос по select.

Вы лучше людям объясните толком почему не пашет select именно на файловых дескрипторах )

Кратко, для этого нужно знать как работает FS.
А работает она очень интересно особено со своим кешем...

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