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 :

[semaphore] interaction entre 2 programmes sous linux


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 36
    Par défaut [semaphore] interaction entre 2 programmes sous linux
    bonjour à tous,

    je souhaiterai faire que dans un programme déjà exécuté lancer un thread par l'intermédiaire d'un autre programe. j'ai déjà sus le faire avec 1 sémaphore sous windows m'ai j'arrive pas la reproduire sous linux

    voici le code du programe 1
    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
    23
    24
    25
    26
    27
    28
    29
    30
    #include <pthread.h>
    #include <sys/sem.h>
    #include <sys/wait.h>
    #include <semaphore.h>
    #include <iostream>
     
    using namespace std;
    sem_t mutex;
     
    void* affichage (void* name) {
            int i = 0;
            for(;;)
            {
                    sem_wait(&mutex); /* prologue */
                    cout << "salut "<<i<<endl;
                    i++;
    //              sem_post(&mutex); /* epilogue */
            }
    }
     
    int main(int argc,char *argv[]){
            pthread_t filsA;
            void* AA;
            sem_init(&mutex,0 , 1);
    //      sem_wait(&mutex);
            pthread_create(&filsA, NULL, affichage, AA);
            pthread_join(filsA, NULL);
            cout <<"Fin du pere\n"  ;
            return 0;
    }
    voici le coded du programe qui va débloque la thread affichage
    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
    #include <pthread.h>
    #include <semaphore.h>
    #include <iostream>
     
    using namespace std;
    sem_t mutex;
     
     
    int main(int argc,char *argv[]){
     
            sem_init(&mutex,0 , 1);
            sem_post(&mutex);
            cout <<"Fin du pere\n"  ;
            return 0;
    }

    je sais pas pour quoi sa fonctionne pas.
    quelqu'un serait-il m'aider?

    merci d'avance

    lermit

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 36
    Par défaut
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #include <pthread.h>
    #include <semaphore.h>
    #include <sys/fcntl.h>
    #include <iostream>
     
    using namespace std;
    sem_t *mutex;
    const char *sem_name;
     
    void* affichage (void* name) {
            int i = 0;
            for(;;)
            {
                    sem_wait(mutex); /* prologue */
                    cout << "salut "<<i<<endl;
                    i++;
    //              sem_post(mutex); /* epilogue */
            }
    }
     
    int main(int argc,char *argv[]){
            pthread_t filsA;
            sem_name ="loggeur.login";
            int     oflag = O_CREAT ;
            void* AA;
            mutex = sem_open(sem_name, oflag , 0777, 1);
    //      sem_init(&mutex,0 , 1);
    //      sem_wait(&mutex);
            pthread_create(&filsA, NULL, affichage, NULL);
            pthread_join(filsA, NULL);
            cout <<"Fin du pere\n"  ;
            return 0;
    }
    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
    #include <pthread.h>
    #include <semaphore.h>
    #include <iostream>
     
    using namespace std;
    sem_t *mutex;
    const char *sem_name;
     
    int main(int argc,char *argv[]){
     
            sem_name ="loggeur.login";
            mutex = sem_open(sem_name, 0, 0770, 1);
            sem_post(mutex);
            cout <<"Fin du pere\n"  ;
            return 0;
    }

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

Discussions similaires

  1. comparaison entre les IPCs sous linux
    Par yashiro dans le forum Linux
    Réponses: 3
    Dernier message: 26/02/2007, 20h07
  2. Faire fonctionner des programmes sous Linux
    Par vviivvii dans le forum Mandriva / Mageia
    Réponses: 14
    Dernier message: 29/08/2006, 19h41
  3. [16F84a] Programmation sous linux
    Par Michaël dans le forum Autres architectures
    Réponses: 2
    Dernier message: 25/02/2006, 12h05
  4. GDB/Recherche EDI - Debugguer un programme sous linux
    Par Rodrigue dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 17/01/2006, 23h35
  5. interaction entre mon programme & openOffice
    Par artatum dans le forum C
    Réponses: 4
    Dernier message: 10/10/2005, 22h28

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