Introductory concepts Why disk IO doesn't work with select()/poll() A network file descriptor is ready to read when the socket buffer has data A network file descriptor is ready to write when the socket buffer has space A disk file descriptor is "always" ready to read from, because data isn't read into memory until read() A disk file descriptor is "always" ready to write to, because there is no "buffer" for a file write()