This chapter covers numerous topics and functions that we lump under the term advanced I/O: nonblocking I/O, record locking, I/O multiplexing (the
poll functions), asynchronous I/O, the
writev functions, and memory-mapped I/O (
mmap). We need to cover these topics before describing interprocess communication in Chapter 15, Chapter 17, and many of the examples in later chapters.
In Section 10.5, we said that system calls are divided into two categories: the “slow” ones and all the others. The slow system calls are those that can block forever. They include
• Reads that can block the caller forever if data isn’t present with certain file types (pipes, terminal devices, ...