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

Linux Discussion :

[C] Les signaux pour arrêter le serveur ?


Sujet :

Linux

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [C] Les signaux pour arrêter le serveur ?
    Bonsoir,

    Dans le cadre de notre projet tutoré nous développons une application réseau en C qui se décompose en deux parties. Une partie principale coordonne l'exécution de tâches, et un serveur réceptionne les résultats. Ce serveur est lancé par le module principal. Il est aussi arrêté par ce dernier. La communication entre eux est très sommaire. L'arrêt du serveur nécessite une certaine procédure (vider les buffer etc ...).
    Nous souhaitions utiliser les signaux. Cependant la primitive signal n'autorise pas le passage de paramètres, et je dois manipuler des structures etc ... Je ne veux pas non plus faire de déclarations globales...
    Les signaux sont-ils vraiment faits pour ça ? Dois-je envisager une autre méthode ?
    Je cherche avant tout à faire simple.

    Merci d'avance pour vos conseils.

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Pourquoi veux-tu envoyer d'autre choses en même temps que le signal qui demande au serveur de s'arrêter ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Le module principal envoie uniquement le signal demandant au serveur de s'arrêter.

    C'est dans la gestion du signal qu'est mon prob. Car en C la primitive signal ne prend pas de paramêtre pour la fonction qu'elle appelle. Alors comment puis-je attendre qu'un buffer se vide si je n'ai pas son adresse à disposition dans la fonction appelée par le signal.

    Merci

  4. #4
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    très confus...

    Expose plus clairement le problème..
    "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

  5. #5
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Ah d'accord, je n'avais pas compris ton problème.

    Typiquement, dans ton signal handler, tu ne fera que positionner une variable pour indiquer que tu dois t'arrêter. Ailleurs dans le code, à l'endroit qui va bien, tu testes cette variable, et tu fais ce qu'il faut pour t'arrêter.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Ok je vois. Et cette variable est simplement déclarée de manière globale ?
    Il n'est pas nécessaire de la protéger ? A la manière d'une ressource critique ?

    @souviron34 : J'ai maintenant la solution, mais je vais essayer de reformuler plus clairement.
    Nous développons un logiciel constitué de deux programmes indépendants A et B .
    A est considéré comme le programme principal. Il pilote très simplement B (démarrer ou arrêter). B ne peut être arrêté brutalement. Il comporte des buffers devant être vidés avant la fin de l'exécution pour ne pas perdre d'informations.
    Je n'avais pas saisi le rôle du handler. Je pensais que les instructions de fin de programme devaient s'y trouver.
    Mais grosse erreur ce n'est pas du tout le cas. Le handler doit être le plus concis possible (modifier en entier et point).
    Enfin le problème est réglé.

    Merci à vous.

  7. #7
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par elbarjo Voir le message
    Ok je vois. Et cette variable est simplement déclarée de manière globale ?
    Il n'est pas nécessaire de la protéger ? A la manière d'une ressource critique ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static volatile sig_atomic_t flag;
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

Discussions similaires

  1. script pour arrêter un serveur
    Par inserm dans le forum Modules
    Réponses: 1
    Dernier message: 05/01/2013, 17h27
  2. Outil pour tracer les requetes SQL envoyées au serveur.
    Par cmako dans le forum Administration
    Réponses: 10
    Dernier message: 18/02/2010, 16h00
  3. Arrêter les avertissements pour les .exe téléchargés
    Par daladim dans le forum Sécurité
    Réponses: 4
    Dernier message: 13/11/2008, 20h00
  4. utiliser une classe pour gerer les signaux
    Par TrueBeliever dans le forum Qt
    Réponses: 2
    Dernier message: 21/12/2006, 17h57
  5. Outils pour trapper les signaux
    Par ericbardoux dans le forum Applications et environnements graphiques
    Réponses: 5
    Dernier message: 22/11/2005, 13h41

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