Llamada del sistema SEMCTL en C

Llamada del sistema SEMCTL en C
El lenguaje C presenta la llamada del sistema SEMCTL en el sistema Linux. Esta llamada del sistema se ha utilizado ampliamente en el sistema de Linux para llevar a cabo los procesos de control especificados por la cubierta de la consola en algún conjunto de semáforos particulares. Los semáforos son IP conocidos ampliamente utilizados para dar acceso a procesos para la comunicación entre sí. Semaphore puede ser una variable que tiene un tipo de datos abstractos para el acceso de control de 1 recurso para muchos procedimientos. Por lo tanto, la llamada del sistema SEMCTL se ha utilizado aquí para controlar el conjunto de semáforos. Comencemos por registrarnos desde el sistema Linux.

Abra la aplicación de la consola desde el área de búsqueda. Una forma alternativa rápida de abrir la consola es a través de "Ctrl+Alt+T".

Ejemplo:

Cree un nuevo archivo C en la carpeta de inicio del sistema Linux con la utilización del comando "toque". Hemos nombrado este archivo C como "SEMCTL.C". Puedes nombrarlo como quieras. La consulta es la siguiente:

$ touch semctl.C

El editor GNU Nano se usará para editar y abrir el archivo. Entonces, la consulta a continuación establecida se ha utilizado para abrir el "SEMCTL.archivo c ".

$ nano semctl.C

Como se muestra en la imagen debajo de que el archivo ya se ha abierto en el editor. Escriba el mismo código en su archivo para ver el funcionamiento de la llamada del sistema "SEMCTL ()". El archivo de encabezado para la entrada-salida y los semáforos se han incluido al comienzo del archivo C. El método principal se ha declarado junto con otra función, "get_val ()". A partir del método principal, hemos definido una variable "V" que obtiene su valor de la función get_val. Este método se ha llamado mientras se aprobó con dos argumentos en los parámetros. Ahora se ha dado el control a la función get_val (). Esta función contiene dos argumentos, e.gramo. Sid como Semaphore ID y "Semnum" como número de semáforo. Los valores aprobados 1 y 4 se guardarán a estos argumentos.

El comando SEMCTL se ha utilizado dentro de la función para configurar el semáforo actual utilizando ID de semáforo y número de semáforo. La función getVal se ha utilizado aquí para obtener el valor de semáforo actual. Después de la recopilación de un valor semáforo, se ha devuelto al método principal. El valor se ha almacenado en la variable "V". Este valor variable se mostrará utilizando la instrucción printf que se muestra en el código C. Ahora puede guardar el código completado por "Ctrl+S" y dejarlo de nuevo en la consola utilizando comandos de acceso directo "Ctrl+X".

Vamos a compilar el "semctl.archivo c "en la consola. Use el compilador "GCC" recomendado para tales tipos de códigos C complicados. La compilación devuelve la advertencia, pero no hay necesidad de pánico. Ejecute su archivo con el "A.Comando fuera ". La salida muestra que el valor de semáforo actual es "-1".

$ GCC SEMCTL.C
ps ./a.afuera

Abra el archivo una vez más para hacerlo diferente un poco. Ábrelo usando el editor "Nano" y defina la variable "Max_Comps" con algún valor, e.gramo. 10. Este tiempo actualiza el código con el script que se muestra a continuación. Comience desde la inicialización del método principal. Contiene la llamada de función del método comp_use (). Ahora se ha dado el control al método comp_use.

La función comp_use contiene el bucle "para" para usar el valor de la variable "max_comps" como un valor máximo en el bucle "para". Hasta que termine el bucle, la instrucción de impresión mostrará el número de computadora. También obtiene e imprime el valor de semáforo actual del método "get_val" llamándolo aquí. El método get_val se ejecutó y devolvió su valor a la declaración de impresión de function comp_use () para mostrarlo en la pantalla. Guarde el archivo de código una vez más y deje de regresar.

Ahora tenemos que compilar el código actualizado con el comando "GCC" para la compilación. Después de la compilación exitosa, hemos ejecutado el archivo y obtuvimos el valor de semáforo para cada computadora.

$ GCC SEMCTL.C
ps ./a.afuera

Conclusión:

La llamada del sistema SEMCTL y su trabajo se han demostrado claramente en esta guía con el lenguaje C usando Ubuntu 20.04 Sistema Linux. Esperamos que encuentre útil este artículo mientras comprende y aprende los conceptos de semáforos en el sistema Linux.