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 :

Problème sémaphore POSIX en C++


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 67
    Par défaut Problème sémaphore POSIX en C++
    Bonjour,

    j'ai un petit souci avec mes sémaphores POSIX.
    Je tente de limiter l'accés à un fichier mais je n'ai pas l'impression que ça marche.
    Les sémaphores étant créés avec les droits 0700.
    Voici un bout de code.

    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
     
    Semaphore maSemaphore = Semaphore();
    maSemaphore.P();
    cout << int_to_str(getpid()) << " j'ai la main" << endl;
    ofstream f("test.txt" , ios_base::out | ios_base::app);
    f << int_to_str(getpid()) << " - j'écris" << endl;
    sleep(10);
    f << int_to_str(getpid()) << " - je réécris" << endl;
    f.close();
    maSemaphore.V();
     
    // P()
    void Semaphore::P(){
         struct sembuf buffer = {0, -1, 0};//numéro,opération,flag 0,-1,0
         semop(_idSem, &buffer , 1);
    }
     
    // V()
    void Semaphore::V(){
         struct sembuf buffer = {0, 1, 0};
         semop(_idSem, &buffer, 1);
    }
    Lorsque je fais un ipcs -s le sémaphore est bien créé.

    Quelqu'un aurait une piste?

  2. #2
    Membre confirmé Avatar de BigNic
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 195
    Par défaut
    quel sont les symtomes ?

    Sinon to code semble bon, chez moi il quasi identique est il marche sur. La seule gross diff chez moi c'est que je fais un sighold pour éviter les interruption que me mettrait en deadlock

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 67
    Par défaut
    ben en fait dans le fichier 'test.txt' j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    27267 - j'écris
    27268 - j'écris
    27267 - je réécris
    27268 - je réécris
    alors que je devrais avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    27267 - j'écris
    27267 - je réécris
    27268 - j'écris
    27268 - je réécris

  4. #4
    Membre confirmé Avatar de BigNic
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 195
    Par défaut
    comment remplis tu _idSem ?

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 67
    Par défaut
    Voila comment j'initialise _idSem.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    #define CHAINE_FILE '/home/.../file.C'
    #define CARACTERE 'A'
    #define DROITS 0700
     
    _key = ftok(CHAINE_FILE, CARACTERE);
    _idSem= semget(_key, MAX_SEM , DROITS | IPC_CREAT);

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 67
    Par défaut
    Ai-je précisé que les deux processus n'ont aucun lien de parenté?

Discussions similaires

  1. JAVA problème sémaphore
    Par boobs60 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 23/10/2009, 12h48
  2. Sémaphore Posix anonyme - comportement inexpliqué
    Par algabus dans le forum POSIX
    Réponses: 2
    Dernier message: 28/12/2008, 14h32
  3. Problème messagequeue Posix
    Par gillD dans le forum C
    Réponses: 6
    Dernier message: 31/10/2007, 21h15
  4. Problème :MMAP / Posix sous Windows
    Par Niluje__ dans le forum C
    Réponses: 4
    Dernier message: 26/09/2007, 18h01
  5. [Posix] problème librairie posix edition de lien
    Par hortensinette dans le forum Développement OS X
    Réponses: 1
    Dernier message: 12/04/2007, 15h57

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