poll() returns even if there is data.
mail at robertoragusa.it
Fri Jul 23 07:30:53 UTC 2010
Mansuri, Wasim (NSN - IN/Bangalore) wrote:
> My question here is,
> Am I using poll() properly?
> can we use poll to read the files like I am reading?
> If we can not use poll than is there any other way using which I can get to know if there is some data in the file after I did last read()?
I'm not sure if poll can be used in this way.
poll() is answering your question about "can I read?" and saying yes, which
apparently means "you have an end-of-file to read".
poll() is used to avoid blocking on sockets and pipes, and, guess what,
your read() is not blocking, so poll() was right to suggest you to read. :-)
You can use the offset returned by lseek() to make a comparison
with your last read offset, but it will be a busy loop (hopefully
with some delay) and not a "wake me up" method. Not so different than
just looping on read(), actually. :-/
Why don't you try checking how "tail -f" is implemented? There is
an "interval" parameter, so I'm afraid it is looping....
A simple strace could be enough, probably easier than reading the source.
Roberto Ragusa mail at robertoragusa.it
More information about the users