C Uso de la función s setpgid

C Uso de la función s setpgid
Cada vez que ingresamos al comando shell, se inicia un nuevo proceso en la sesión. El sistema luego asigna un identificador de proceso (PID) y un identificador de grupo de proceso (PGID). PID indica la ID del proceso, mientras que PGID describe la ID del grupo de proceso de cualquier tarea realizada actualmente por el sistema o aún en proceso. El setpgid () es una función relevante para esto. Como el nombre indica, se utiliza para agregar al grupo de proceso existente o, en otro caso, para crear un nuevo grupo de procesos dentro de la misma sesión del proceso de llamada. La identificación del grupo para el proceso del líder de la sesión es siempre la misma. No ha cambiado.

Esta función se utiliza para establecer el PGID (ID de grupo de proceso) dentro de la sesión del proceso de llamadas para que podamos asignar o reasignar el proceso a diferentes grupos de procesos. Para comenzar un nuevo grupo de proceso con cualquier proceso en particular como líder grupal, esta función también ayuda en este aspecto. Este artículo resaltará la creación y el trabajo de la función setpgid ().

Descripción

La identificación del proceso es una identificación que existe dentro de la sesión de un proceso de llamada. Es la identificación cuyo PGID queremos cambiar. Puede ser la persona que llama de setpgid () o puede ser los hijos de la misma. El PID no puede ser el líder de la sesión que se va a cambiar.

PGID, por otro lado, es la nueva identificación que queremos asignar a ese proceso en particular especificado por PID. Si PGID apunta hacia el grupo de proceso existente, entonces debe estar presente dentro de la sesión de la persona que llama. El nuevo grupo también se crea dentro de la sesión de la persona que llama.

Sintaxis

#incluir
int setpgid (pid_t, pgid);

La función setpgid () está presente en el campo de la biblioteca. Y esto está incluido en por eso que estamos usando esta biblioteca aquí. En la parte del parámetro de la función, se escriben ambos ID (PID, PID). Ambos pertenecen a la identificación del proceso que queremos establecer o al que queremos unir o crear.

Hechos y características de la función setPGID ()

Como se discutió anteriormente, SetPGID () establece la ID del grupo de un proceso que PID especifica a la ID del grupo de proceso. A veces existe algunas circunstancias en las que todos los grupos de procesos se encuentran en la misma sesión. Esto ocurre cuando se toma un proceso de un grupo a otro a través de setpgid (). En esta situación, PGID especifica el grupo de procesos existente y se une.

Getpgid () es una función como setpgid (). La sintaxis para ambos procesos es la misma, incluidas las llamadas de funciones. Al igual que ambas funciones, getpgrp () y getpgid (0) de la misma manera son equivalentes entre sí.

Usos de grupos de procesos

Los grupos de procesos trabajan para distribuir las señales para reenviar y atribuir las solicitudes de entrada. Los procesos que poseen los mismos grupos de procesos están en primer plano y pueden leerse, mientras que los otros procesos se bloquearán con una señal si se intenta leer.

Valor de retorno

Cuando la llamada de función se realiza con éxito y se realiza el proceso, el setpgid () y setPgrp () return cero cuando se produce el error, y la función devuelve -1. Después de que se pasa la señal de error. GetPGID () y getpgrp () están asociados con setpgid (). Entonces GetPGID () devuelve un grupo de proceso cuando se realiza con éxito. En error, da -1. Mientras que la función getpgrp () siempre proporciona al grupo de procesos actualmente en uso.

Para implementar algunos ejemplos, use un editor de texto y una terminal de Linux en ese aspecto. Escribiremos código en los editores de texto y luego veremos el resultado en el terminal de Linux.

Ejemplo 1

En primer lugar, utilizaremos la misma biblioteca descrita anteriormente en la guía, que es esencial para ejecutar el código.

#incluir

En el programa principal, el tipo de retorno se toma como entero. No es nulo porque la función devolverá el valor en forma de entero como ID de proceso. Usamos if-statement ya que tenemos que aplicar una verificación de error. La primera línea en la declaración llama a setpgid () con el argumento de otra función getpid (). Esta función obtendrá la identificación que queremos establecer. Si el valor devuelto es '-1', significa que se ha producido un error para que el proceso se finalice.

If (setPGID (getPID (), 0) == -1)

Esto volverá a llamar a la misma función setpgid para restablecer el ID predeterminado del proceso. Pero si la condición es verdadera, significa que el valor devuelto es 0, entonces las llamadas de la función para el proceso de proceso getPID () y el grupo de proceso se llama a getpgrp ().

Guarde el archivo con la extensión C y vea la salida Vaya al terminal de Linux; El código fuente se compilará y luego se ejecutará a través de un compilador GCC. Se utiliza un archivo de entrada que es un código fuente, y se utiliza un archivo para mostrar la salida. 'archivo. C 'es el nombre de un archivo.

Archivo de archivo $ gcc -o.C
ps./archivo

El código se ejecuta correctamente cuando ejecutamos el código, y la identificación del proceso y las ID de grupo de proceso se obtienen. Ambas ID son las mismas, lo que significa que ambos se encuentran en la misma sesión. Cada vez que ejecute el código, los ID resultantes serán diferentes.

Ejemplo 2

Aquí usaremos una bifurcación () en el código fuente. Como la función Fork () se utiliza para crear un nuevo proceso, el proceso infantil y este proceso infantil se ejecuta simultáneamente con su proceso principal. Este es otro método para establecer la identificación y las ID de grupo de los procesos recién creados. Primero, tenemos que inicializar una variable para verificar si el error existe o no. Si existe, entonces se pasa una señal de error. Y en la parte más, la función de la bifurcación se llama. Si la identificación del proceso es igual a la horquilla devuelve 0, entonces significa que se crea el nuevo proceso.

If ((pid = fork ()) == 0)

Todas las identificaciones grupales de un niño se mostrarán antes de esperar y después de él. Del mismo modo, se mostrarán las ID de proceso principales; Estos se obtienen a través de la función getpid (). Al final, se llamará a la función setpgid () si no es cero, entonces se pasa un error.

Ahora veremos el resultado. Se mostrarán todas las ID de proceso y las ID de grupo de proceso. Usando Fork (), los ID de padre-hijo se muestran por separado. Primero, la identificación del proceso de los padres y el hijo se muestra antes de la espera y luego después de él consecutivamente.

Conclusión

El artículo 'c: uso de la función setpgid' es un artículo que contiene la descripción básica con respecto a la funcionalidad setpgid () y la identificación de proceso y la creación y uso de ID de proceso de grupo. Algunos errores son las razones para detener el proceso pueden ser los errores de búsqueda que no encuentran ninguna identificación existente, entonces la ID del proceso del proceso actual se asigna automáticamente. Esperamos que este esfuerzo lo ayude en sus términos de trabajo en el lenguaje de programación C.