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.