La función de bifurcación de Perl

La Funcion De Bifurcacion De Perl



El fork() es una función incorporada de Perl que se utiliza para crear un proceso hijo de cualquier proceso en ejecución y solo funciona en los sistemas operativos Linux. Crea una copia separada del proceso en ejecución y ejecuta ambos procesos en paralelo. Entonces, si se actualiza la variable del proceso padre, no tendrá ningún efecto en la misma variable del proceso hijo o viceversa. En este tutorial se muestran los usos de la función fork() en Perl.

Sintaxis:

La sintaxis de la función fork() se proporciona a continuación. Devuelve un valor numérico o 'undef'. Si la función fork() funciona correctamente, se devuelve un ID de proceso particular o se devuelve 0 para el proceso hijo. Devuelve 'undef' si la función fork() no tiene éxito.







identificación o tenedor indef ( ) ;

Ejemplo 1: uso simple de la función Fork()

Cree un archivo Perl con el siguiente script que crea un proceso hijo a partir del proceso actual utilizando la función fork(). El ID del proceso se imprime después de ejecutar la función fork(). Las variables de los procesos padre e hijo se almacenan en diferentes ubicaciones de memoria. Entonces, si el valor de la variable se cambia en el proceso padre, no se realizará ningún cambio para la misma variable del proceso hijo o viceversa. En este script, se cambia la variable del proceso padre. Luego, se imprimen las variables de los procesos padre e hijo.



#!/usr/bin/perl

usar estricto ;
usar advertencias ;
utilizar 5.34.0 ;

#Declarar una variable
mi $var = 'Tenedor de prueba' ;
#Bifurcar el proceso actual
mi $proceso_id = tenedor ( ) ;

#Verifique la identificación del proceso
si ( $id_proceso < 0 )
{
decir 'No se puede bifurcar el proceso'. ;
}
elsi ( $id_proceso == 0 )
{
decir 'Proceso hijo:' ;
    #Imprimir el valor de la variable del proceso hijo
decir 'El valor de la variable: $var' ;
}
demás
{
decir 'Proceso principal: $process_id' ;
    #Actualizar el valor de la variable
$var = 'Prueba Horquilla 2' ;
    #Imprimir el valor de la variable del proceso padre
decir 'El valor de la variable: $var' ;
}

Producción:



El siguiente resultado aparece después de ejecutar el script. La variable del proceso padre se modifica con el valor “Test Fork 2”, pero la variable del proceso hijo permanece sin cambios. Entonces, el valor de la variable del proceso hijo es 'Test Fork'. Ese fue el valor después de la bifurcación:





  p1

Ejemplo 2: uso de las funciones Fork() y Wait()

Cree un archivo Perl con el siguiente script que muestra el uso de la función fork() con la función wait(). Se declaran tres variables al comienzo del script. La función sleep() se usa dentro del bloque del proceso padre durante 1 segundo y dentro del proceso hijo durante 2 segundos. La suma de las dos variables se calcula y almacena en otra variable dentro del bloque del proceso principal. Los valores de las dos variables se multiplican y almacenan en otra variable dentro del proceso hijo. La función esperar() se utiliza al final del script para esperar a que se complete la tarea de un proceso antes de iniciar la tarea de otro proceso. Si la función fork() se usa varias veces en el script y se ejecutan muchos procesos al mismo tiempo, puede surgir una situación de punto muerto. El problema se puede resolver usando la función esperar().



#!/usr/bin/perl

usar estricto ;
usar advertencias ;
utilizar 5.34.0 ;

#Inicializar las variables
mi $n1 = 10 ;
mis $n2 = 25 ;
mi $resultado = 0 ;

#Bifurcar el proceso actual
mi $proceso_id = tenedor ( ) ;

#Verifique la identificación del proceso
si ( $id_proceso == 0 )
{
    #Calcular la multiplicación de los números.
decir 'Proceso hijo: $$' ;
$resultado = $n1 * $n2 ;
decir 'Espera 2 segundos... \norte ' ;
dormir 2 ;
decir 'La multiplicación de $n1 y $n2 es $resultado.' ;
}
elsi ( $id_proceso > 0 )
{
    #Calcular la suma de los números.
decir 'Proceso principal: $$' ;
$resultado = $n1 + $n2 ;
decir 'Espera 1 segundo... \norte ' ;
dormir 1 ;
decir 'La suma de $n1 y $n2 es $resultado.' ;
}
demás
{
decir 'No se puede bifurcar el proceso'. ;
}

#Espere para completar la tarea del proceso.
esperar ( ) ;

Producción:

El siguiente resultado aparece después de ejecutar el script. Según el resultado, el proceso hijo se crea correctamente, se imprime el ID del proceso padre y el script se pausa durante 1 segundo para completar la tarea. A continuación, se imprime el ID del proceso secundario y el script se pausa durante 2 segundos para completar la tarea. La salida de los procesos padre e hijo se imprime más adelante:

  p2

Conclusión

El propósito de utilizar la función fork() de Perl se muestra en este tutorial creando un proceso hijo y realizando diferentes tipos de tareas dentro del bloque de los procesos padre e hijo.