El Monitores de llamadas de sistema Waitpid () un hijo del proceso de la persona que llama para cambios en el estado y recupera información sobre el niño cuyo comportamiento ha cambiado. El niño fue detenido por una señal o reanudado por una señal considerada como un cambio de estado. Esperar a un niño terminado permite que el sistema libere los recursos asociados con el niño; Si no se realiza una espera, el niño terminado permanecerá en un "zombi" condición.
El Función del sistema WaitPID () Pausa el proceso actual hasta que el argumento PID especifica a un niño que ha cambiado. El proceso de llamadas se detiene hasta que el proceso de un niño se complete o se finalice. Waitpid () detiene el proceso de llamadas hasta que el sistema reciba información sobre el estado del niño. Waitpid () Devuelve rápidamente si el sistema ya tiene información de estado en un niño adecuado cuando se llama. Si el proceso de la persona que llama obtiene una señal con la acción de ejecutar un controlador de señal o terminar el proceso, Waitpid () esta terminado. El función waitpid () Pausará la ejecución del hilo del llamado hasta que reciba información y actualizaciones para uno de sus procesos infantiles terminados o una señal que ejecutará un procedimiento de captura de señal o finalizará el proceso.
Ejemplo 1
Vamos a elaborar nuestro primer ejemplo en la terminal del Ubuntu 20.04 Sistema operativo. Cree un archivo con el comando nano en la consola, como se revela a continuación. Depende completamente de usted seleccionar un nombre de archivo.
$ nano espera.C
Puede verificar que el archivo haya aparecido en Editor de gnu nano. Simplemente coloque el código que se muestra en la imagen adjunta.
En este ejemplo, hemos utilizado para el bucle para incrementar el proceso. Llamada del sistema ha sido usado. El Llamada del sistema se utiliza para comenzar un nuevo proceso, conocido como proceso infantil, que se ejecuta en paralelo con el que hizo el horce () Llamada al proceso principal. Después Llamada del sistema Crea un nuevo proceso infantil, todos los procesos realizarán la siguiente instrucción. No acepta entrada y devuelve un valor entero. Después de eso, se usó la función de sueño.
La función Sleep () suspende el funcionamiento del hilo de llamadas hasta que el rango de segundos en tiempo real proporcionado por los segundos de parámetros ha pasado, o se da una señal a la hilo de llamada con la acción de invocar una función de captura de señal o terminar la proceso. Hemos agregado "1" como argumento. Esposa verifica el estado de terminación del niño devuelto por la espera y Métodos de WaitPID () Para ver si el proceso infantil se completó con éxito.
En la función principal de este programa, el esperar () llamada del sistema ha sido llamado. Una vez que comprenda este código, guarde y salga del archivo y vuelva al terminal. Escriba las instrucciones a continuación para la ejecución del código. Hemos usado el Compilador GCC en Ubuntu 20.04 Sistema operativo.
$ GCC espera.C
ps ./a.afuera
La salida se puede ver en la imagen adjunta.
Ejemplo 2
Vamos a elaborar nuestro segundo ejemplo en la terminal del Ubuntu 20.04 Sistema operativo. Crear un archivo con el comando nano en la consola como se presenta a continuación. Depende totalmente de usted seleccionar un nombre de archivo.
$ Nano Waitpid.C
Puede verificar que el archivo haya aparecido en Editor de gnu nano. Simplemente coloque el código que se muestra en la imagen adjunta.
En el código anterior, nuevamente, Llamada del sistema ha sido usado. El propósito de Llamada del sistema es comenzar un nuevo proceso, conocido como proceso infantil, que se ejecuta en paralelo con el que hizo el horce () Llamada al proceso principal. Después Llamada del sistema Crea un nuevo proceso infantil, todos los procesos realizarán la siguiente instrucción. No acepta entrada y devuelve un valor entero. Exit_failure significa la implementación ineficaz de un programa. El función pausa () Esperará las señales.
Si un niño se ha detenido pero no se ha rastreado usando Ptrace () llamada del sistema, Ruidoso Volverá. Aunque este parámetro no está seleccionado, se suministra el estado de los niños trazados que se han detenido. WCONTINUD regresar si un niño detenido ha sido reiniciado por Sigcont Broadcast. WexitStatus (estado) Proporciona el estado de salida del niño. Si Esposa Devuelve verdadero, esta expresión solo debe usarse. La frecuencia de la señal que llevó al proceso infantil a finalizar es devuelta por Wtermsig (estado). Si Conñutado dio el "verdadero", esta expresión solo debe usarse.
El número de señal que llevó al niño a detenerse es devuelto por WSTOPSIG (estado). Si Espeluznante Devuelve verdadero, esta expresión solo debe usarse. Wifsignaled (estado) Devuelve verdadero si una señal finalizó el proceso del niño. Una vez que comprenda este código, guarde y salga del archivo y vuelva al terminal. Escriba las instrucciones a continuación para la ejecución del código. Hemos usado el compilador GCC en Ubuntu 20.04 Sistema operativo.
$ GCC Waitpid.C
ps ./a.afuera
La salida se puede ver en la imagen adjunta.
Conclusión
Esta guía era sobre el uso del Llamada del sistema WaitPID () en la programación C. Hemos declarado dos ejemplos. Uno de ellos es más simple y fácil. Una vez que obtenga la comprensión, puede moverse fácilmente al complejo. Ejecute ambos ejemplos en su sistema para facilitarle experimentar el uso del Llamada del sistema WaitPID () en la programación C.