PRCTL en C Ejemplo de uso

PRCTL en C Ejemplo de uso
La llamada del sistema PRCTL se ha utilizado en el lenguaje C para manipular diversas características de la función de llamado o actividades de proceso. El primer parámetro de la llamada al sistema "PRCTL" define lo que debe hacerse con los valores inicializados en el encabezado. Todos los demás argumentos o parámetros se utilizarían según el primer argumento y su valor. Vamos a mirar profundamente la llamada del sistema "PRCTL" en C mientras hemos estado trabajando en el Ubuntu 20.04 al momento de implementar este artículo.

Ejemplo 01:

Abra e inicie sesión desde Ubuntu 20.04 y lanzar la aplicación llamada "Terminal" desde el área de actividad. Esto podría hacerse utilizando un acceso directo de llave simple "Ctrl+Alt+T" en su escritorio. Cree un archivo de tipo C para implementar la llamada del sistema prctl (), realice el comando que se muestra en el SNAP debajo.

$ touch prtcl.C

Después de la creación, abramos el archivo con un editor GNU Nano según las instrucciones mostradas.

$ nano prtcl.C

Agregue el código que se muestra en la imagen Snap debajo del archivo GNU. El código contiene archivos de encabezado necesarios para el funcionamiento de un código prctl (). Luego hemos creado y definido 4 hilos llamados Process1, Process2, Process3 y Process4. Los 4 procesos o funciones contienen el vacío como un parámetro general o de firma, pero podría ser algo más. Como hemos elaborado antes, el primer parámetro de la llamada del sistema "prctl ()" mostrará lo que tenemos que hacer con la función de llamada. Entonces, hemos llamado prctl () en los 4 métodos para establecer el nombre de un proceso utilizando el argumento "PR_SET_NAME". Después del sueño de 2 segundos, la función PUTS se ejecutará para establecer el nombre de un proceso.

Luego hemos declarado un puntero de tipo matriz llamado "FP" y sus elementos contienen los nombres de 4 métodos o procesos. El método principal declaró una variable "ID" aquí indica procesos. El bucle "para" se ha utilizado aquí para crear un proceso infantil para cada proceso principal utilizando el método "Fork ()" y guardarlo en la variable "INT". La declaración "si" se ha utilizado para verificar si la "ID" es 0. Si la condición cumple, imprimirá el número de proceso infantil, y la matriz "FP" se utilizará como un método para obtener el primer elemento, proceso 1, etc. hasta que termine el bucle. La presentación de métodos de esta manera lo haría ejecutar todos los métodos definidos anteriormente.

Compilar el archivo primero.

$ GCC PRCTL.C

La ejecución del archivo muestra la salida a continuación. El nombre se ha establecido para cada proceso.

ps ./a.afuera

Ejemplo 02:

Tengamos otra ilustración de prctl. Abramos el prctl.archivo c.

$ nano prctl.C

Después de que se han incluido los encabezados, el método "Cap_1" se ha inicializado. Se ha definido el descriptor del archivo "F", y una variable "RES" se ha inicializado con un valor "-1". Ahora el descriptor del archivo se utilizará para obtener la máxima capacidad del kernel. El descriptor del archivo abrirá el archivo como solo lectura desde la carpeta Kernel. Si el descriptor del archivo obtiene más de 0 caracteres, la matriz "BUF" se definirá con el tamaño 32. Se han definido dos enteros, y el método de lectura se ha utilizado para obtener los datos del búfer utilizando el descriptor de archivo y guardado en la variable "NUM". Si el valor variable de "NUM" es mayor que 0, el valor de un índice de "NUM" variable se inicializará como nulo. El método "SSCANF" vinculará el puntero "Res" con la matriz "BUF" y la almacenará dentro de la variable "R". Así es como se podría obtener la máxima capacidad del núcleo. Si el valor para la variable "r" no es igual a 1, actualizará el valor de "res" con "-1" nuevamente. Al final, el descripción se ha cerrado.

El segundo método, "Cap_2" se ha utilizado para inicializar la variable de capacidad es igual a 0. El método prctl () usa "pr_capbset_read" para leer la capacidad máxima. Si el valor de la capacidad es mayor que 0, se incrementará. Cuando la capacidad llega a 0, dejará de incrementar y devolverá el valor de "CP" con una disminución de 1.

El método principal es obtener la capacidad del "Cap_1" y Cap_2 e imprimirlo en la condición.

La compilación y la ejecución de este archivo muestran que el valor de capacidad máxima es 40.

$ GCC PRCTL.C
ps ./a.afuera

Conclusión:

En esta guía, hemos discutido dos ejemplos para elaborar la llamada del sistema PrCTL () en C. Te ayudará mucho, ya que lo hemos demostrado con dos argumentos diferentes.