c unix io file-descriptor multiplexing

¿Cuál es la "excepción" de un descriptor de archivo?



unix io (2)

Forma corta: situaciones excepcionales ocurren cuando un socket TCP recibe datos fuera de banda.

Si lee la página de select manual , encontrará una referencia a otra página de manual suplementario llamada select_tut con la siguiente explicación:

exceptofds

Este conjunto está vigilado por "condiciones excepcionales". En la práctica, solo una de esas condiciones excepcionales es común: la disponibilidad de datos fuera de banda (OOB) para leer desde un socket TCP. Consulte recv (2), send (2) y tcp (7) para obtener más detalles sobre los datos OOB. (Otro caso menos común donde select (2) indica que se produce una condición excepcional con pseudo-terminales en modo paquete; ver tty_ioctl (4).) Después de que select () haya regresado, exceptofds se borrarán todos los descriptores de archivos excepto aquellos para que ha ocurrido una condición excepcional.

Cuando uno llama a select () preguntando qué descriptores de archivo tienen "excepciones" esperando, ¿qué significa eso?

¿Cómo se dispara una de estas "excepciones"?

Si alguien puede indicarme una buena explicación, sería increíble. He estado buscando en Google y no puedo encontrar nada.


De hecho, parece que hay muy poca información sobre esto. Afortunadamente hay una pregunta existente con una muy buena respuesta.

En el caso de Linux, por ejemplo, puede denotar datos fuera de banda que se reciben en un socket de flujo, o "un cambio de estado que ocurre en un esclavo de pseudoterminal conectado a un maestro que está en modo paquete" (TLPI 63.2.1 )