The following code essentially cats a file with select.select():
f = open(\'node.py\')
fd = f.fileno()
while True:
r, w, e = select.select([fd], [], [])
select allows filedescriptors pointing to regular files to be monitored, however it will always report a file as readable/writable (i.e. it's somewhat useless, as it doesn't tell you whether a read/write would actually block).
epoll just disallows monitoring of regular files, as it has no mechanism (on linux at least) available to tell whether reading/writing a regular file would block