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.
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.
Indeed there seems to be very little information on this. Thankfully there's an existing question with a very good answer.
In the case of Linux, for example, it can denote out-of-band data being received on a stream socket, or "a state change occuring on a pseudoterminal slave connected to a master that is in packet mode" (TLPI 63.2.1).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With