This chapter covers a variety of functions and techniques that we lump into the category of “advanced I/O.” First is setting a timeout on an I/O operation, which can be done in three different ways. Next are three more variations on the
send, which allow a fourth argument that contains flags from the process to the kernel,
writev, which let us specify a vector of buffers to input into or output from, and
sendmsg, which combine all the features from the other I/O functions along with the new capability of receiving and sending ancillary data.
We also consider how to determine the amount of data in the socket receive buffer, how to use the C standard ...