/*

   Daemon tipo UNIX

   UNIX Daemon, example code rules.

   By:

   Por:

      Oscar Medina Duarte

      is111936@mail.udlap.mx

  

*/

 

#include <sys/types.h>

#include <sys/stat.h>

#include <signal.h>

#include <fcntl.h>

#include <stdlib.h>

#include <stdio.h>

 

void damncode();

void teschingando(int);

void setduplicate(int);

 

main(){

pid_t pid;

 

signal(SIGINT,teschingando);

signal(SIGUSR1, setduplicate);

 

/* inicia o processo filho */

pid = fork();

 

/* Testa se o fork está ok */

if (pid <0){

   printf("Forking Error : )\n");

   exit(-1);

}else if (pid !=0 ){

   printf("\nThis is a Father 1\n");

}else{

   pid = fork();

 

   if (pid <0){

      printf("Forking error : )\n");

      exit(-1);

   }else if (pid !=0 ){

      printf("\nThis is a father 2\n");

      }else{

  

     

 /* Coloca em  Daemon mode */

/* captura sid do filho */   

  setsid();

 

/*altera mascara do filho – para que possa ser executado */

      umask(0);

 

/* altera diretório */

      chdir("/");

 

/*chama código do daemon */

      damncode(); /* Y ejecutar el daemon, run the daemon */

  

   }

}

 

}

 

void damncode(){

/* Este é o código do nosso daemon – imprime PID

   printf("Daemon :\n PID %d\tPPID %d\n",getpid(),getppid());

   for(;;);

}

 

void teschingando(int signo){

 

   printf("Signal : %d",signo);

   exit(1);

}

 

void setduplicate(int signo){

   main();

}