- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <string.h>
- #include <errno.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <time.h>
- #include <signal.h>
-
- void daemonize(); // Creation du deamon
-
- int main(int argc,char *argv[])
- {
- /**demarrage du deamon
- */
- daemonize();
-
- /**
- ps -aux pour verifier le pid
- */
- while(1) // boule infini
- {
- /**ceci est une GRAVE ERREUR
- un deamon ne doit jamais intergir avec
- l'utilsateur . il est ecrit pour executer des
- tacher cache (hidden task) ex: service reseau ftp,web.
- Mettez ca dans la tete ceci est un exemple
- */
- puts("tic..c le demon");
- /*pur que le puts marche vous devez commenter
- ou supprimer la fonction
- close(STDOUT_FILENO);
- */
- sleep(30);
- }
- return EXIT_SUCCESS
- }
- void deamonize(void)
- {
- pid_t pid,sid;
- pid=fork();
- switch(pid) {
-
- case 0:
- //on sort de la boucle
- break;
-
- case -1: //erreur
- exit(EXIT_FAILURE);
- break;
-
- default :
- //process parent
- exit(EXIT_SUCCESS);
- }
- /** on travaille maintenant
- dans le processus child
- */
- umask(0);
-
- sid=setsid();
-
- if(sid<0) {
- perror("sid");
- exit(EXIT_FAILURE);
- }
-
- if(chdir("/")<0){
- perror("chdir");
- exit(EXIT_FAILURE);
- }
- printf("Demon demarer pid=%d\n",(int)getpid());
-
- close(STDIN_FILENO); //fermer le SHELL
- close(STDOUT_FILENO);
- close(STDERR_FILENO);
-
- }
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <time.h>
#include <signal.h>
void daemonize(); // Creation du deamon
int main(int argc,char *argv[])
{
/**demarrage du deamon
*/
daemonize();
/**
ps -aux pour verifier le pid
*/
while(1) // boule infini
{
/**ceci est une GRAVE ERREUR
un deamon ne doit jamais intergir avec
l'utilsateur . il est ecrit pour executer des
tacher cache (hidden task) ex: service reseau ftp,web.
Mettez ca dans la tete ceci est un exemple
*/
puts("tic..c le demon");
/*pur que le puts marche vous devez commenter
ou supprimer la fonction
close(STDOUT_FILENO);
*/
sleep(30);
}
return EXIT_SUCCESS
}
void deamonize(void)
{
pid_t pid,sid;
pid=fork();
switch(pid) {
case 0:
//on sort de la boucle
break;
case -1: //erreur
exit(EXIT_FAILURE);
break;
default :
//process parent
exit(EXIT_SUCCESS);
}
/** on travaille maintenant
dans le processus child
*/
umask(0);
sid=setsid();
if(sid<0) {
perror("sid");
exit(EXIT_FAILURE);
}
if(chdir("/")<0){
perror("chdir");
exit(EXIT_FAILURE);
}
printf("Demon demarer pid=%d\n",(int)getpid());
close(STDIN_FILENO); //fermer le SHELL
close(STDOUT_FILENO);
close(STDERR_FILENO);
}