Daemon unix-like

Description

Un deamon unix est un processus interne qui s'exécute en arrière-plan plutôt que sous le contrôle direct d'un utilisateur (ca permet de liberer votre SHELL)c'est l'equivalent d'un service NT sous windows .
ecrire un daemon en C est tres simple avec ses quelque fonction :

-fork
-switch
-umask
-sid
-chdir
-close(shell)
-boucle infini

cc -c daemon.c -o demon

Source / Exemple :


#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); }

Conclusion :


Marche impec sour tous les unix-like

FREEBSD FOR LIFE

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.