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

Réseau C Discussion :

comment detruire les semaphores crées par les messages queues?


Sujet :

Réseau C

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 41
    Points : 40
    Points
    40
    Par défaut comment detruire les semaphores crées par les messages queues?
    Bonjour,

    Je travaille sous Gentoo linux, et j'ai utilisé les messages queues dans mon programme écris en C (avec msgget, msgrcv, msgctl(msgid,IPC_RMID,0) ...). A la fin de l'execution, les messages queues sont bien fermées. Par contre, en faisant un "ipcs" je vois que y a des semaphores qui ont été crées et qui ne sont pas détruits à la fin de l'execution de mon programme. Dans mon programme, y a aucun moment j'ai appelé les commandes pour créer les semaphores, alors je présume que c'est les messages queues qui les ont crées. Alors comment faire pour les détruires à la fin du programme? Merci!

  2. #2
    Membre averti Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Points : 301
    Points
    301
    Par défaut
    Salut tu peux regarder ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int detruireSemaphores(semaphore ensSemaphores)
    {
      int a;
     
      a = semctl(ensSemaphores, 0, IPC_RMID, 0);
     
      if (a == -1)
        perror("Erreur semctl \n");
     
      return a;
    }
    avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef int semaphore;
    Mais faut connaitre l'id de l'ensemble de sémaphore, et si c'est pas toi qui l'a créé, faut le récupérer, mais ça je sais pas comment
    define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 41
    Points : 40
    Points
    40
    Par défaut
    J'avais vu les API pour fermer les semaphore aussi, mais justement je ne sais pas comment je peux recuperer les ids des semaphores puisque c'est pas moi qui les ai crées..

  4. #4
    Membre averti Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Points : 301
    Points
    301
    Par défaut
    Hmmmm peut être en faisant un 'ls -l' et en récupérant les bons champs??
    define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.

  5. #5
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 41
    Points : 40
    Points
    40
    Par défaut
    un "ipcs -s" tu veux dire?
    Mais je trouve que c'est un peu dangeureux comment solution, je risque de détruire les semaphores utilisés par les autres process qui n'ont rien a voir avac le mien peut etre...

  6. #6
    Membre averti Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Points : 301
    Points
    301
    Par défaut
    Oui ipcs -s je voulais dire !
    define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.

  7. #7
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Citation Envoyé par yli_ren
    Dans mon programme, y a aucun moment j'ai appelé les commandes pour créer les semaphores, alors je présume que c'est les messages queues qui les ont crées. Alors comment faire pour les détruires à la fin du programme? Merci!
    Je n'ai jamais vu une file de message qui créé un sémaphore. Es-tu sûr que c'est ton programme qui créé ce sémaphore?

  8. #8
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 41
    Points : 40
    Points
    40
    Par défaut
    En fait dans mon programme j'ai utilisé des files de message et des connection par socket (TCP) pour la communication entre differents process, à moins que ce sont les sockets qui créent les semaphores?... c'est vrai que je n'ai pas du tout pensé à ça...

  9. #9
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    Bonjour

    Citation Envoyé par yli_ren
    En fait dans mon programme j'ai utilisé des files de message et des connection par socket (TCP) pour la communication entre differents process, à moins que ce sont les sockets qui créent les semaphores?... c'est vrai que je n'ai pas du tout pensé à ça...
    Il se peut que tes files de message et des sockets allouent en interne des sémaphores. Dans ce cas, il n'appartient pas des les fermers non plus de les manipuler. Ta seule responbilité est d'utiliser les files et les sockets et surtout de les fermer.
    Bien le bonjour chez vous
    Jowo

  10. #10
    Membre régulier Avatar de ludo86
    Homme Profil pro
    Développement applications iOS/android
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développement applications iOS/android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 79
    Points
    79
    Par défaut
    Je déplace mon pb dans un autre sujet. Désolé pour le message qui sert à rien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment ne pas etre bloqué par les dépendances ?
    Par mucky dans le forum Mandriva / Mageia
    Réponses: 4
    Dernier message: 20/12/2009, 13h37
  2. comment cree un trait controlé par les touches clavier
    Par Invité dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 20/11/2008, 15h32
  3. Réponses: 8
    Dernier message: 08/04/2008, 10h05
  4. Inersert dans une table crée par les cardinalités [*,*]
    Par drasalmed dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/05/2007, 18h27

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