inicio mail me! sindicaci;ón

El origen de los demonios

Hoy alguien preguntó a la salida de clase acerca del término demonio. ¿Por qué los demonios se llaman demonios? Hace tiempo leí acerca de ello.

Originalmente había una serie de programas en los unix que monitorizaban el sistema permenentemente, estos monitores del sistema se llamaban day-monitors, que al abreviarse quedan como daemons, razón de que alguno lo aproximara a demons, y otros a demonios.

El proceso de llegar a ser un demonio (daemonize) esencialmente consiste en lo que se llama fork off and die, es decir, hacer un fork(). Como sabréis fork() crea un proceso similar al proceso que lo ha llamado, pudiendo llegar a ejectuarse en paralelo uno y otro.

La llamada a fork() puede devolver un entero menor de 0 para indicar error. Algo mayor que cero para indicar que eres el padre (lo que está devolviendo es el PID del hijo), y por tanto ahora vas y cumples con la segunda parte del trato: el die.

En caso de que el fork() te haya devuelvo 0 es que eres el hijo, en cuyo caso ya estás daemonizado, y como tu padre ha muerto (o debería de estar muriéndose), has pasado a ser adoptado por init. Ya puedes hacer tus cositas.

Dicho en cristiano:

#include <stdio.h>

#include <sys/types.h>

#include <unistd.h>

#include <stdlib.h>

int main(int argc, char **argv)

{

pid_t hijo;

hijo=fork();

if(hijo<0) {

perror(“Couldn’t fork off!!”);

exit(EXIT_FAILURE);

}

if(hijo>0) {

printf(“Soy el padre!! tiene el pid %d\n”,hijo);

exit(EXIT_SUCCESS);

}

/*Código del hijo*/

printf(“Soy el niño tonto\n”);

exit(EXIT_SUCCESS);

}

Realmente los demonios no pueden escribir a stdout, usan la consola o un fichero de log, porque la I/O la tienen desasociada (igual que no deberían leer de stdin) .

Una entrada cortita pero nutritiva para vuestra cultura [geek] general. Para los que quieran más y mejor que sepan que la Wikipedia tiene su correspondiente definición con unos enlaces sabrosones.

Leave a Comment