Programación en C

Cómo usar la llamada al sistema de encuesta en C

Cómo usar la llamada al sistema de encuesta en C
La función poll () permite a los programas multiplexar la entrada y la salida a través de una serie de descriptores de archivos. En otras palabras, la llamada al sistema poll () es análoga a la llamada al sistema select () en funcionamiento, ya que detiene su disparo para uno de varios descriptores de archivos al estar disponible para E / S. Poll () examina el descriptor de documento asignado para enumerar el (los) evento (s) en incidentes a cada elemento de la matriz que apunta a él por descriptores de archivo. El método poll () puede determinar en cuál de los descriptores de archivo leerá o escribirá un programa los detalles, que han visto estos incidentes. En esta guía, usaremos Ubuntu 20.04 para comprender el concepto de llamada al sistema poll () en Linux paso a paso.

Sintaxis:

int poll (struct pollfd * ufds, unsigned int nfds, int timeout);

El argumento "fds" determina los descriptores del documento que se verificarán, así como los incidentes de importancia para cada. Es una referencia a una matriz que tiene un elemento para cada descriptor de documento abierto. Los elementos de la matriz son estructuras pollfd, donde fd denota un descriptor de documento abierto, y todos los sucesos y re-eventos, generalmente llamados máscaras de bits, se generan creando una amalgama de las banderas de eventos correspondientes:

POLLIN:

Aparte de los datos de alta prioridad, los datos de información se pueden leer sin que ni siquiera se bloqueen. Además, si el mensaje de respuesta es de tamaño cero, esta señal de bandera se genera para los STREAMS en revents. Esta bandera tiene el mismo significado que POLLRDNORM | POLLRDBAND.

POLLRDNORM:

Sin interrupción, se pueden leer datos de información ordinaria. La información sobre la banda de preocupación de prioridad principal 0 se puede leer a pesar de la interrupción de STREAMS. Y si el mensaje de respuesta es de longitud cero, esta señal se genera en re-eventos.

BANDA DE SONDEO:

Los datos de preocupación principal se leerán a pesar de causar retrasos. La información sobre rangos de prioridad mayores que cero se puede leer a pesar de interferir en STREAMS. Y si la respuesta del mensaje es de duración cero, esta señal se propaga en revents.

POLLPRI:

Puede haber algunas excepciones al descriptor del documento. La información con una prioridad máxima se puede leer sin estar bloqueada. Además, si la respuesta es de duración cero, esta señal se propaga para STREAMS en revents.

CONTAMINACIÓN:

Los usuarios pueden escribir usando la bandera POLLOUT. Privados de detenerse, se pueden registrar datos típicos. La información sobre la banda de preferencia 0 se puede grabar a pesar de la interrupción en STREAMS.

POLLWRNORM:

Funciona igual que POLLOUT.

BANDA DE CONTACTO:

Los datos de mayor prioridad se escribirán utilizando esta bandera. La información sobre los rangos de preferencia superiores a cero para STREAMS se puede registrar sin ser bloqueada. Esta actividad solo evalúa las bandas en las que ya se ha escrito al menos una vez, ya que no se ha escrito ninguna banda de preferencia en este STREAM.

POLLERR:

Es una condición de error y solo ocurre cuando el sistema o el flujo ha encontrado un problema. Este símbolo solo se aplica a la máscara de bits revents; a lo largo de las actividades participante, se pasa por alto.

POLLHUP:

Especifica la condición de colgar y solo ocurre cuando la conexión al sistema ha sido deshabilitada. Esta ocurrencia y CONTAMINACIÓN son igualmente compatibles; una vez que ha surgido un problema, nunca se escribirá una transmisión.

POLLNVAL:

Esto especifica la solicitud no válida o inusual. Esta actividad, sin embargo, no excluye la participación en POLLIN, POLLRDNORM, POLLRDBAND o POLLPRI. Este símbolo solo se aplica a la máscara de bits revents; se pasa por alto en el participante del evento.

Ejemplo de llamada al sistema de encuesta:

Realiza el mismo papel que select (), aunque a mayor escala. Poll () está disponible en cualquier máquina Linux basada en Glibc. Los núcleos más antiguos imitan poll () con select () en toda la biblioteca C. Sin embargo, los programas no deberían necesitar hacer una distinción. Aquí hay un ejemplo de cómo se siente poll (). Por lo tanto, abra la terminal de la línea de comandos primero con la tecla de método abreviado "Ctrl + Alt + T.”Después de abrirlo, tenemos que crear un archivo de tipo C para escribir un código de tipo C en él. Para ello, hemos estado usando el editor nano. Entonces, pruebe el siguiente comando nano en la terminal junto con el nombre del archivo C.

$ nano nuevo.C

Ahora se ha abierto el editor nano para el archivo C "nuevo". Primero debe incluir algunas bibliotecas, especialmente la "encuesta.h "biblioteca. Se ha especificado que la función principal tiene un tipo de retorno entero con dos argumentos en su parámetro, e.gramo., argc y argv. Luego hemos declarado un descriptor de archivo fd y una matriz de tipo de caracteres llamada “buf.”Después de eso, se ha definido una variable de tipo de estructura llamada pollfd pfds de tamaño 2. A continuación, se ha declarado una llamada al sistema abierto para obtener el valor de la matriz de tipos de caracteres y asignarlo al descriptor de archivo "fd" como se ve en la imagen. Mientras que el descriptor de archivo es "1", la estructura "pfds" se actualizará con algunos datos en ella usando la bandera POLLIN dentro de ella. Ahora hemos definido una función de llamada al sistema poll (). El primer parámetro de la llamada al sistema poll () es la estructura ufds utilizada en el código. El segundo parámetro especifica el total de estructuras pollfd en la serie fds.

Y el último parámetro muestra el valor de tiempo de espera de tipo entero para la llamada al sistema de encuesta. Si los pfds son revents y se agregan con un valor de 0, entonces la llamada al sistema de lectura leerá los datos del búfer. La declaración "si" se utilizará para comprobar si la declaración de lectura ha devuelto su valor a un número entero y escribir datos. Si la estructura "pfds" está en la posición "1" mientras se recupera e ingresa los datos, la llamada al sistema de lectura usará los datos de un búfer mientras se usa el descriptor "fd".

Guardar lo nuevo.c archivo y ciérrelo. Ahora compílelo usando el compilador gcc.

$ gcc nuevo.C

Al ejecutar este código, agregamos datos en una encuesta para que se lean, y escribe datos nuevamente como en el resultado a continuación.

PS ./a.fuera

Conclusión:

En este artículo descrito anteriormente, hemos discutido la llamada al sistema poll () en lenguaje C. Espero que este tutorial le resulte útil y eficaz mientras trabaja en el sistema operativo Linux.

Cómo instalar League Of Legends en Ubuntu 14.04
Si eres fanático de League of Legends, esta es una oportunidad para que pruebes League of Legends. Tenga en cuenta que LOL es compatible con PlayOnLin...
Instale el último juego de estrategia de OpenRA en Ubuntu Linux
OpenRA es un motor de juego de estrategia en tiempo real libre / gratuito que recrea los primeros juegos de Westwood como el clásico Command & Conquer...
Instale el último emulador de Dolphin para Gamecube y Wii en Linux
Dolphin Emulator te permite jugar los juegos de Gamecube y Wii que elijas en computadoras personales con Linux (PC). Al ser un emulador de juegos de ...