Messages in this thread | | | Date | Fri, 12 Jan 2001 09:55:21 -0500 | From | Michael Rothwell <> | Subject | Re: O_NONBLOCK, read(), select(), NFS, Ext2, etc. |
| |
Alan Cox wrote: > > > using the O_NONBLOCK flag, then read() and write() will always return > > immediately and not block the calling process. This does not appear to > > be true; but perhaps I am doing something wrong. If I open() a file (on > > 2.2.18) from a floppy or NFS mount (to test in a slow environment) with > > O_NONBLOCK|O_RDONLY, read() will still block. If I try to select() on > > the file descriptor, select() always returns 0. > > The definition of immediate is not 'instant'. Otherwise no I/O system would > ever return anything but -EWOULDBLOCK. Its that it won't wait when there is > no data pending. On a floppy there is always data pending
How about using fcntl(), O_ASYNC and SIGIO? Or maybe a broader question: what's the preferred/working way to do async file i/o on Linux?
-M - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
| |