Funciones utilizadas para obtener IDS
Dos tipos de ID están presentes aquí. Uno es la identificación actual del proceso PID. Mientras que el otro es la identificación del proceso principal PPID. Ambas funciones son funciones integradas que se definen en la biblioteca. Mientras ejecuta el código sin usar esta biblioteca, puede causar un error y deja de ejecutar.
función getpid () en c
Cuando se forma y se ejecuta algún proceso, se le asigna una identificación única. Esta es la identificación del proceso. Esta función ayuda a devolver la identificación del proceso que se llama actualmente.
función getppid () en c
Esta identificación es útil para devolver el proceso del proceso/función principal.
Ejemplo 1
Para comprender el ejemplo de PID en el proceso en el idioma C. Necesita dos herramientas: cualquier editor de texto y el terminal de Linux, en el que se supone que debe ejecutar los comandos. Crear un archivo en cualquier editor de texto. Hemos creado un código de nombre de archivo1.c Como el código está escrito en el lenguaje C, por lo que debe guardarlo con el .extensión C.
Hemos agregado una sola biblioteca. Luego aquí comienza el programa principal. En el programa principal, llamamos a la función integrada getPID (); Para obtener la identificación del proceso actual. Y se introduce y asigna una variable. Para que el valor de la función pid () se almacene en esta variable, entonces tomaremos la impresión del valor utilizando esta variable.
Ahora queremos ejecutar el contenido de este archivo en el terminal de Linux. El requisito previo del código se compilará primero y luego ejecutar. Para la compilación, se usa GCC. Si su sistema carece de GCC, primero debe instalarlo utilizando el comando sudo.
Ahora compile el código escrito. Esto se puede lograr utilizando el siguiente comando agregado.
$ GCC -O CODE1 CODE1.CMientras que -O se usa para abrir el archivo Guardar en el comando. Luego, después de -o, escribimos el nombre de archivo.
Después de la compilación, ejecute el comando.
ps ./código1La imagen de arriba muestra la ID de proceso de la función.
Ejemplo 2
En el ejemplo anterior, utilizamos el PID. Pero en este ejemplo, se usan tanto el PID como el PPID. El código fuente para esta función es casi el mismo que el anterior. Solo hay otra adición de una identificación.
Considere un archivo que contiene dos variables en el programa principal asignado por las ID de proceso. Uno es del proceso actual, y el otro es del proceso principal. Luego, de manera similar al primer ejemplo, imprima ambas ID a través de sus variables.
Int pid_t = getpid ();Estas dos son las funciones principales de todo el código. Ahora, después de la creación de archivos, el siguiente paso es compilar y ejecutar el archivo. Compilar usando GCC en el comando. Después de la compilación, luego ejecutarlo en la terminal de Ubuntu.
$ GCC -O CODE1 CODE1.CLa salida muestra que el ID del proceso se muestra primero, y luego se muestra la ID de proceso principal.
Ejemplo 3
Todos los procesos se ejecutan y ejecutan de manera paralela. Los procesos de los padres y los hijos ejecutan todas las líneas restantes colectivamente. Ambos dan resultados a la vez. Pero al usar una bifurcación en el código C, si esta función devuelve un valor inferior a 0, significa que la llamada de función se termina.
Considere un nuevo archivo que tenga dos bibliotecas en el encabezado respectivo. Aquí se utiliza una condición en la que hemos utilizado la declaración "if-else". En el programa principal, se afirma que si el valor de la bifurcación está en el valor de -IVE, mostrará un mensaje de que la identificación del proceso falló y no se obtendrá. Si la situación es falsa, entonces el compilador se trasladará a la parte más de la condición. En esta parte, se obtiene la ID del proceso, luego mostraremos esta ID de proceso y mostraremos un mensaje de que se obtiene la ID del proceso. Aquí cotizaremos la declaración if-else del código fuente.
Ahora, de nuevo, compile el código y luego ejecutelo.
./Code2La salida muestra que la parte del otro se ha ejecutado e imprimirá la ID del proceso y luego mostrará un mensaje PID.
Ejemplo 4
Este es otro ejemplo de explicar el mismo concepto. La función de Fork () devuelve dos valores diferentes. En el caso de un proceso infantil, el valor es 0, que se debe devolver. Al mismo tiempo, el valor en el caso del proceso principal es la identificación del proceso del nuevo niño.
En este ejemplo, se usa la misma condición if_else. Pero aquí, se aplican dos condiciones. Comparando el PID que es inferior a cero y el otro es igual a cero. Si el PID es inferior a cero, mostrará un mensaje de error. Mientras que si el PID es igual a cero, significa que es un proceso infantil, y la parte de lo contrario muestra que si el PID es mayor que cero, es un proceso principal.
Ahora compilar y ejecutar el código.
$ GCC -O Code3 Code3.CDesde la salida, podemos ver que la parte del otro se imprime primero significa que la identificación del proceso es mayor que 0.
Ejemplo 5
Muy bien, este es el último ejemplo en el que hemos tratado de resumir todos los códigos descritos anteriormente para explicar el funcionamiento de esta función. También podemos usar bucles con las funciones Fork () para usar las funciones getpid (). Podemos usar bucles para crear muchos procesos infantiles. Aquí tenemos que usar el valor de 3 en el bucle.
Nuevamente tenemos que usar la declaración condicional en el código. El bucle for comienza desde el uno e itera hasta el 3rd doblar.
Ahora guarde el archivo y ejecútelo. Hay otro método simple para compilar y ejecutar el código solo en un solo comando. Eso es.
$ GCC CODES5.C -O S & ./Code5Ahora avanzando hacia la salida del código. La identificación del proceso principal es idéntica en todos los procesos infantiles. Esto significa que todos estos procesos pertenecen a uno de los padres. Estos procesos se ejecutan uno después, el otro, ya que el bucle está limitado a 3. Solo se harán 3 iteraciones.
Conclusión
Este artículo contiene el conocimiento básico y el funcionamiento de una función getpid () en los comandos de Linux. La identificación única se asigna a cada proceso a través de esta función.