Creación y control de procesos en Perl
Cada vez que el servidor interpreta una página Perl, se crea un nuevo proceso en la tabla de procesos del sistema, este proceso esta identificado por un número al que llamaremos identificador de proceso o pid.
Las funciones que usaremos en este artículo son própias de Unix, por lo que dependiendo del entorno en que se interprete nuestro CGI será posible que no funcione correctamente.
Lo primero que debemos saber es cómo crear un proceso nuevo en la tabla de procesos, esto lo haremos con la funcion fork, que copiará el proceso actual teniendo así dos procesos identicos, además, devolverá el pid del proceso creado (hijo) cuando estemos en el proceso original (padre) y devolverá 0 cuando nos encontremos en el proceso hijo.
De esta manera podemos definir unas instrucciones distintas según el valor de $pid pero de momento no sabremos cual es el proceso que se ejecutará primero por lo que el resultado final puede ser inesperado.
#!/usr/bin/perl -w
print "Content-type: text/html\n\n";
$pid = fork();
if($pid != 0){
print "Estamos en el proceso padre<br>";
}
else {
print "Estamos en el proceso hijo<br>";
}
Si queremos tener mas control sobre los procesos en ejecución, tendremos que tener en cuenta estas tres funciones:
wait - Esta funcion detiene el proceso padre en espera que finalice un proceso hijo en ejecución, no dara resultado si no hay procesos hijos activos
exit - Termina un proceso, podremos terminar el proceso actual haciendo exit(0);
sleep - Detiene el proceso actual un número determinado de segundos.
Vamos a ver un ejemplo donde usaremos estas tres funciones con un proceso padre y un proceso hijo:
#!/usr/bin/perl -w
print "Content-type: text/html\n\n";
$pid = fork();
if($pid != 0){
wait;
print "Finaliza el proceso hijo<br>";
sleep(5);
print "Hemos esperado 10 segundos en el padre<br>";
}
else {
print "Iniciamos el proceso hijo<br>";
sleep(10);
print "Hemos esperado 5 segundos en el hijo<br>";
exit(0);
}
Usuarios que han visto este tema también han visto...
- ¿Cómo enviar emails usando Perl y Sendmail?
- Como Utilizar MySQL con Perl
- Leer dimensiones de imágenes en Perl
- Jerarquía de Operaciones en Perl
- Conectar a una Base de Datos con Perl
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.