viernes, septiembre 29, 2006

Primer Demonio en PERL


Vamos a ver un ejemplo muy sencillo de como crear un daemon en perl. Antes que nada el código:

#!/usr/bin/perl -w

use strict;
use POSIX qw(setsid);
use Readonly;

Readonly my $DEMORA_ENTRE_CHEQUEOS => 30;
Readonly my $ARCHIVO_A_ESPERAR => "/tmp/noticias.txt";

daemonize();

while( 1 ) {

if ( -e $ARCHIVO_A_ESPERAR ){
# Se encuentra el archivo. procesarlo...
#...
#...
}

sleep( $DEMORA_ENTRE_CHEQUEOS );
}


sub daemonize {

open STDIN, '/dev/null' or die "No puedo leer /dev/null: $!";
open STDOUT, '>>/dev/null' or die "No puedo escribir /dev/null: $!";
open STDERR, '>>/dev/null' or die "No puedo escribir /dev/null: $!";
defined(my $pid = fork) or die "NO puedo hacer fork: $!";
exit if $pid;
setsid or die "NO se puede iniciar una sesion nueva: $!";
umask 0;
}

Aquí se puede observar el demonio corriendo. Ya se ha liberado de la consola y su Parent Process ID es 1 (init).

pablo@locobox:~/Desktop/demonios$ ps -ef | grep primer_demonio
pablo 15000 1 0 07:51 ? 00:00:00 /usr/bin/perl -w ./primer_demonio.pl


Bueno, en definitiva un ejemplo sencillo para demostrar lo sencillo que es crear un demonio en perl.
Si desean profundizar en el tema, les recomiendo la lectura de este artículo (en inglés)
.

No hay comentarios.: