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

Bibliothèques, systèmes et outils C Discussion :

Problème d'accès Sémaphores


Sujet :

Bibliothèques, systèmes et outils C

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 41
    Par défaut Problème d'accès Sémaphores
    Bonjour, Je suis en train de faire des exercices sur les sémaphores et j'ai un petit problème lors de l'exécution du code suivant

    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
     
    s = semget (cleSem, 5, IPC_CREAT);
    	printf("id des 5 semaphores %d \n", s);
       if (s == -1)
       {
          perror("semget 1");
          exit (EXIT_FAILURE);
       }
       for (i = 0 ; i < 5 ; i++)
       {
          if ((semctl (s, i, SETVAL, 0)) == -1)
          {
             perror ("semctl 1");
             exit (EXIT_FAILURE);
          }
       }
    Lors de son exécution, le printf s'affiche puis '' semctl 1 : permission denied''

  2. #2
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 872
    Par défaut
    Je pense que c'est tout simplement parce que la semaphore existe toujours et que par consequent elle ne peut etre recreee.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 41
    Par défaut
    Cependant, la cleSem est demandée en argument du programme, elle n'est donc jamais deux fois la même...

  4. #4
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 872
    Par défaut
    Pourquoi ne serait-elle pas la meme ? Si la cle est "toto", pourquoi ne pourrait-on pas remettre "toto" ?

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 490
    Par défaut
    Citation Envoyé par Maxime54 Voir le message
    Bonjour, Je suis en train de faire des exercices sur les sémaphores et j'ai un petit problème lors de l'exécution du code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    s = semget (cleSem, 5, IPC_CREAT);
    Lors de son exécution, le printf s'affiche puis '' semctl 1 : permission denied''
    « IPC_CREAT » ne suffit pas : il faut également passer les flags de permissions exactement comme tu le ferais pour un fichier avec open(). Donc soit IPC_CREAT | S_IRWXU, soit directement IPC_CREAT | 0660.

    Citation Envoyé par imperio Voir le message
    Je pense que c'est tout simplement parce que la semaphore existe toujours et que par consequent elle ne peut etre recreee.
    On dit un sémaphore ! C'est un mot masculin, même en dehors de l'informatique.

    Par contre, avec les bons flags, ça ne l'empêcherait pas de récupérer le jeu existant s'il n'a pas spécifié IPC_EXCL.

    Citation Envoyé par Maxime54 Voir le message
    Cependant, la cleSem est demandée en argument du programme, elle n'est donc jamais deux fois la même...
    Comme dit plus haut, et contrairement à d'autres ressources, tes sémaphores ne seront pas automatiquement libérés en fin de programme, car il servent justement de point de rendez-vous à des processus distincts. Il faut les détruire en fin de programme avec semctl et IPC_RMID.

    Utilise la commande ipcs sous le shell pour voir les IPC existantes à un moment donné.

    Dernier détail : il se peut que tu manques de chance et que tu tombes sur une clé réservée par le système. Par exemple, impossible chez moi de créer un jeu de sémaphores avec la clé 0x12345678. Mais avec 0x12345677, ça marche.

Discussions similaires

  1. [ADO] [MSACCESS] Problème d'accès à une table nommée OF
    Par FredRaid dans le forum Bases de données
    Réponses: 3
    Dernier message: 15/02/2005, 17h22
  2. Problème d'accès à une DB
    Par Mvu dans le forum ASP
    Réponses: 4
    Dernier message: 04/01/2005, 11h36
  3. [TOMCAT] JSP problème d'accès aux méthodes d'une classes
    Par gunnm dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 22/05/2004, 14h02
  4. problème d'acces concurentiel à un fichier
    Par Theoden dans le forum MFC
    Réponses: 2
    Dernier message: 04/03/2004, 09h49

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