/*
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();
}