What's a file descriptor's "exception"?
c, file-descriptor, io, multiplexing, unix
Solution
Short form: exceptional situations occur when a TCP socket recieves out of band data.
If you read the `select` manual page, you will find a reference to another supplementary manual page called `select_tut` with the explanation:
exceptfds
This set is watched for "exceptional conditions". In practice, only one such exceptional condition is common: the availability of out-of-band (OOB) data for reading from a TCP socket. See recv(2), send(2), and tcp(7) for more details about OOB data. (One other less common case where select(2) indicates an exceptional condition occurs with pseudo-terminals in packet mode; see tty_ioctl(4).) After select() has returned, exceptfds will be cleared of all file descriptors except for those for which an exceptional condition has occurred.
Problem
When one calls select() asking which file descriptors have "exceptions" waiting, what does that mean? How does one trigger one of these "exceptions"? If anyone can point me to a nice explanation, that'd be awesome. I've been googling and can't find a thing.