in reply to How do I block until new data has been added to a file?

A unix-specific answer: Unix doesn't provide a mechanism to do what you ask. select() and poll() are just telling you that you can perform a read() without blocking, and reading from a file never blocks. Even the "tail -f" command works by alternately sleeping and checking the file that it's tailing.

If you're worrying about wasting CPU or something like that, I suggest you shouldn't be concerned about it; waking up once a second or so and performing a read() isn't going to burden the computer. If you need to get this working for some other reason, here's an idea: spawn a subprocess to read from the file, copying everything that it reads to a pipe being read by the main process. This gives you something the main process can select() on.

  • Comment on Re: How do I block until new data has been added to a file?