GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué se usa select en Linux?

Programas que quieren seguir ejecutándose mientras también la lectura de la entrada interactiva del usuario debe ser multiproceso o necesitan leer los flujos de entrada cuidadosamente y, específicamente, condicionalmente.

Select(2) se puede utilizar para implementar el segundo patrón de diseño. Puede determinar si la entrada se puede leer sin bloquear toda la aplicación.


El select() La llamada al sistema le dice si hay datos para leer en los descriptores de archivo que le interesan. Estrictamente, se trata de si una operación de lectura en el descriptor de archivo se bloqueará o no.

Si ejecuta read() en un descriptor de archivo, como el que está conectado a un puerto serie, y no hay datos para leer, la llamada se colgará hasta que haya algunos datos para leer. Programas que usan select() no deseo ser bloqueado de esa manera.

También preguntas:

¿Por qué tenemos que incrementar el descriptor de archivo en 1 y pasarlo mientras paso el descriptor de archivo establecido en select? ?

Probablemente esté especificando el tamaño del FD_SET. El primer argumento de select() se conoce como nfds y POSIX dice:

El nfds El argumento especifica el rango de descriptores a probar. El primer nfds se comprobarán los descriptores en cada conjunto; es decir, los descriptores de cero a nfds-1 en los conjuntos de descriptores serán examinados.

Entonces, para probar un descriptor de archivo n , el valor en nfds debe ser al menos n+1 .


Utiliza la llamada de selección cuando tiene que monitorear constantemente los descriptores de archivos hasta que estén listos para algún IO sin bloqueo.

Generalmente se usa cuando desea que el IO (por ejemplo, read ()) no bloquee, lea la:página de manual

Lea también las API relacionadas


Linux
  1. Linux – ¿Todo es un archivo?

  2. Permisos de archivo en Linux:lectura/escritura/ejecución

  3. 10 ejemplos prácticos de comandos de corte de Linux para seleccionar columnas de archivos

  4. Truncar un archivo mientras se está utilizando (Linux)

  5. ¿Por qué rsync no puede copiar archivos de /sys en Linux?

Comando de archivo de Linux

Cómo crear un archivo en Linux

Menos comando en Linux

Comando Gzip en Linux

Cómo leer un archivo con espacios en Linux

Comandos de Linux utilizados con frecuencia por los administradores de sistemas de Linux - Parte 5