This is a good question. Personally, I've never tried to use a normal file in this way, but it seems like a reasonable way to await another process's write to it. However looking over the posix specification, it seems like return immediately is the correct response when using a normal file, though I may be misunderstanding it:
File descriptors associated with regular files always select true
for ready to read, ready to write, and error conditions.
Looking at your code though, you may want to record errno as part of this, since you're getting back -1, which means there's probably something else going on anyways. In this case you're using "fd+1" as the num fd's when you should probably just be using "1". If the fd number assigned is 1024 or greater, you should get EINVAL for exceeding the maximum allowed set of fd's for select(). If you're opening this file while it doesn't yet exist (you didn't include O_CREAT in the open call), you're expected to get back EBADF.
I've included the storage team public mailing list in case anyone would like to correct my assessment or add any more detail.
Thanks
Martin