En cada ejemplo y discusión con el que me encuentro en el contexto de la programación de sockets BSD, parece que la forma recomendada de configurar un descriptor de archivo en el modo de E / S sin bloqueo es usar la O_NONBLOCK
bandera para fcntl()
, por ejemplo,
int flags = fcntl(fd, F_GETFL, 0);
fcntl(fd, F_SETFL, flags | O_NONBLOCK);
He estado haciendo programación de red en UNIX durante más de diez años y siempre he usado la FIONBIO ioctl()
llamada para hacer esto:
int opt = 1;
ioctl(fd, FIONBIO, &opt);
Realmente nunca pensé mucho en por qué. Lo acabo de aprender de esa manera.
¿Alguien tiene algún comentario sobre los posibles méritos respectivos de uno u otro? Me imagino que el lugar de la portabilidad difiere un poco, pero no sé en qué medida ioctl_list(2)
no habla de ese aspecto de los ioctl
métodos individuales .