IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Création d'un démon


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 48
    Par défaut Création d'un démon
    Bonjour

    Je souhaite lancer un serveur en tache de fond, j'ai essayé de faire comme dans l'extrait tiré de < ce post > (Le second exemple)

    J'ai du mal avec l'étape 4 ("Finalement le démon doit fermer tous les descripteurs de fichier que le schell aurait pu lui passer "), Je ne sais pas comment faire.

    J'ai essayé avec la fonction getdtablesize():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int i;
    for (i = getdtablesize (); i >= 0; --i)
        close (i);
    Mais mon programme ne se lance pas (je ne le retrouve pas dans la liste des procéssus en fonction ).


    J'ai écrit une fonction qui semble faire ce que je veux, mais j'ai de gros doutes quand à sa fiabilité.

    J'aimerai donc avoir votre avis sur la fonction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    void
    lancer_demon (void)
    {
       pid_t pid;
    /* On se sépare du père */
      pid = fork ();
      if (pid < 0)
        { perror ("fork() "); exit (EXIT_FAILURE); }
      if (pid > 0)
        exit (EXIT_SUCCESS);
     
    /* Création d'une nouvelle session */
      setsid ();
     
    /* Séparation du terminal*/
      pid = fork ();
      if (pid < 0)
        {
          perror ("fork() ");
          exit (EXIT_FAILURE);
        }
      if (pid > 0)
        exit (EXIT_SUCCESS);
     
        /* Fermeture des entrée/sorties*/
        fclose (stdout);
        fclose (stdin);
        /* Redirection de stderr vers un fichier log */
        freopen ("/var/log/serveur.log", "w" , stderr);
        /* Changement du mask de création de fichier */
        umask (022);
        /* On se place dans le répertoire de travail*/
        chdir ( getenv( "SERVER_PATH" ) );
    }
    Voila

  2. #2
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 787
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 787
    Par défaut
    j'ai du mal avec le concept, pourquoi le programme père est-il quitté, ca sert à quoi ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 48
    Par défaut
    Citation Envoyé par cladsam
    j'ai du mal avec le concept, pourquoi le programme père est-il quitté, ca sert à quoi ?
    Pour rendre le processus indépendant par rapport à son père, pour le passer en arrière plan.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 48
    Par défaut
    Quand j'affiche la valeure de renvoie de "getdtablesize()" j'obtient la valeur "1024". Ors dans ma fonction je n'en ferme pas autant.

Discussions similaires

  1. Création démon sous Red Hat
    Par james1984 dans le forum Linux
    Réponses: 2
    Dernier message: 11/01/2010, 14h09
  2. création d'un démon
    Par zerros dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 06/08/2009, 17h26
  3. [Kylix] Création d'un fichier lien
    Par DrQ dans le forum EDI
    Réponses: 2
    Dernier message: 14/05/2002, 21h30
  4. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo