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

POSIX C Discussion :

creer un daemon pour serveur sur linux


Sujet :

POSIX C

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 40
    Points
    40
    Par défaut creer un daemon pour serveur sur linux
    bonjour,

    c'est une application client/serveur que j'ai fini de réaliser avec les sockets
    le serveur se lance sur une console ensuite le client sur une autre console.

    je travaille sur mandriva. maintenant je veux essayer de faire marcher mon serveur avec la console fermé, sans qu'il ne s'éteigne. un peu comme le serveur apache , on peut le fermer tant qu'on ne met pas quitter il fonctionne.

    comment faire pour créer un deamon pour ce code en C
    Merci!!

  2. #2
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    Salut,

    Ca se fait avec setsid().
    Maintenant ya quelques precautions d'ordre sécurité quand on fait un démon, je les ai plus en tete, mais yavait notamment : on ferme tous les descripteurs de fichiers (y compris l'entree standard/sortie standard) et on se met dans un dossier où on peut rien écrire. Ces details doivent se trouver sur le net

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par timtima Voir le message
    comment faire pour créer un deamon pour ce code en C
    Merci!!
    C'est 'daemon' et non deamon... (titre corrigé)
    Pas de Wi-Fi à la maison : CPL

  4. #4
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Compil your life guy!
    The Aures Project

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 40
    Points
    40
    Par défaut
    si je comprend bien, je dois juste rajouter setsid() à mon code serveur?

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    bah ou rien changer et le mettre dans inittab
    (avec respawn si jamais il se plante)
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 40
    Points
    40
    Par défaut
    quand j'essaye de mettre le setsid() , après le démarage du processus fils. le serveur ne marche pas en tant que daemon.
    je vous envoie mon code serveur.
    Fichiers attachés Fichiers attachés

  8. #8
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    bah ou rien changer et le mettre dans inittab
    (avec respawn si jamais il se plante)
    Excuse souviron mais ca m'intérresse tu veux bien développer un petit peu ?
    Merci
    Compil your life guy!
    The Aures Project

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    ben ton serveur est lié à un service, non (un port nommé dans etc/services) ?

    tu peux le lancer en background, non ? ("./serveur config.dat &" par exemple)
    (ceci te permet de ne pas ouvrir de console spéciale)

    ton client se connecte bien avec, et dialogue correctement ?

    Il y a au moins 3 possibilités SANS modifier le source :

    • a) Le fait de le mettre en background le rend accessible à tous les shells de CET utilisateur (celui qui lance le script).
    • b) partant de là, tu peux mettre la ligne lançant le serveur (ou plutôt le script lançant le serveur) dans le .cshrc système, ce qui le lancera pour tous les utilisateurs (à condition que dans ton script tu vérifies juste qu'il ne soit pas déjà lancé).
    • c) avec inittab. Il suffit de placer la ligne avec laquelle tu lances le serveur dans inittab avec les paramètres appropriés (je ne suis pas sur Linux, je reviendrais compléter ultérieurement).


    Et je pense que suivant les distributions il peut y avoir d'autres moyens (je ne suis pas sur Mandriva mais RedHat).


    [EDIT]

    Bon j'ai été faire mon petit tour sur mon linux...

    Alors :

    • man inittab
      et
    • man 8 init

    (si tu peux être root bien entendu)

    runlevel:id:respawn:script_de_demarrage_du_serveur

    + quelques options à voir dans les man pages

    Dans ce cas, le serveur est démarré au boot (à la fin) , et si il y a un pbe (coredump ou autre).

    Le fichier est /etc/inittab


    [/EDIT]
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/02/2011, 18h16
  2. [MANTA] Installation d'un serveur sur Linux
    Par Yolak dans le forum HyperFileSQL
    Réponses: 4
    Dernier message: 01/02/2011, 15h43
  3. serveur sur linux ou windows
    Par m3am3a dans le forum Linux
    Réponses: 4
    Dernier message: 11/04/2008, 16h22
  4. choix et aide pour serveur sous linux suse
    Par asus02 dans le forum Matériel
    Réponses: 3
    Dernier message: 14/12/2007, 10h35
  5. [Sécurité] Créer des alias pour apache sur lycos
    Par Furius dans le forum Langage
    Réponses: 11
    Dernier message: 10/01/2006, 18h34

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