On Feb 11, 7:47 pm, "Rhodri James" <rho...@wildebst.demon.co.uk> wrote: > On Thu, 12 Feb 2009 03:01:16 -0000, birdsong <david.birds...@gmail.com> > wrote: > > > So I guess I didn't have a complete understanding of poll, I thought > > it returned file descriptors that had registered an event that the > > user asked to watch for. In my case, select.POLLIN > > Constant Meaning > > POLLIN There is data to read > > > ...there ins't any data to be read. The file is readable, yes, but is > > that all that the syscall has to offer? > > To quote the web page referenced in help(select): > > "It cannot be used on regular files to determine whether a file has grown > since it was last read." > > poll() and friends are wrappers over the socket library "poll" and > "select" functions, which primarily exist to facilitate asynchronous > socket communications. They can take ordinary file descriptors as > well as sockets because there's no good reason not to, but a regular > file will always be ready to read as long as you haven't read past > the end of file. > > You're trying to use a regular file as if it was a pipe. My first > obvious question is do you have to do it this way? Do you have > any control over the program writing to file? Can you cause the > output to go to stdout and pipe it into your script's stdin > instead? That would make your life vastly easier. agreed, this was my original idea, but i figured implementing a tail - f via poll was alot faster to write and implement. i'm glad at least know why it wasn't working as expected.
i've already written a tail -f similar to the one found in the link from a later poster, but i was hoping to use poll to cut down on unecessary seeks -i'm trying to avoid actions that would drive up iowait on the boxes this would run on. thanks for the clarification on the poll family of syscalls. > > If you can't, I'm not sure what your best strategy is. I'd > be tempted to use "tail -f filetocheck | yourscript.py" and > palm the job off on an already-written tool. If you want to > do it in Python, the only thing that springs to mind is > periodically checking the size of the file and reading more > when that changes. You'll need to be very careful to keep > what size you think the file is in sync with how much you've > read! > > -- > Rhodri James *-* Wildebeeste Herder to the Masses -- http://mail.python.org/mailman/listinfo/python-list