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 synchronisation fork()


Sujet :

C

  1. #1
    Membre à l'essai
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 20
    Points : 17
    Points
    17
    Par défaut Problème synchronisation fork()
    Bonjour,

    Je suis en train de développer un programme en langage C dans lequel je dois utiliser les fork() pour créer des processus, les segments de mémoire partagée et les sémaphores.

    Dans mon main(), j'ai créé une fonction "forkn()" qui génére un nombre de processus donné (fork dans une boucle for). Les processus fils créés envoi une structure de données en mémoire partagée.

    J'essaye ensuite de retirer les informations de cette structure directement après la fonction forkn() dans mon main.

    Le problème est que ma structure est vide après appel de la fonction forkn() ! aucune trace de donnée à l'intérieur ! J'imagine qu'il faudrait mettre en place une synchronisation mais je ne vois pas comment faire pour synchroniser plusieurs fils avec le programme main()...

    Si vous avez des idées je suis preneur Merci !

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

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Normalement, un petit sleep (1) dans le père devrait faire l'affaire.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  3. #3
    Membre à l'essai
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Merci pour ta réponse !

    Je n'y avais pas pensé mais malheureusement cela ne fonctionne pas.

    Voila comment se déroule mon (pseudo) 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
    23
     
    int main(int argc, char* argv[])
    {
              /* Debut main... */
              /* Generation des processus fils */
              int i;
              for (i=0;i<nbProcessus;i++) 
              {
                    if (fork() == 0)
                    {
                            (*pauBoulot)(i); /* Pointeur sur la fonction processus() */
                            exit(0);
                    }
              }
     
              /* Ici je souhaiterais afficher les donées de la structure partagee 
                  remplit par la fonction processus mais impossible !! structure vide !! */
    }
     
    void processus()
    {
              /*Remplissage donnee dans zone partagée */
    }
    Je ne sais pas comment synchroniser tout ça...

Discussions similaires

  1. Problème de fork en //
    Par soad029 dans le forum POSIX
    Réponses: 10
    Dernier message: 07/01/2007, 20h29
  2. [THREAD] Problème synchronisation
    Par goddet dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 25/10/2006, 09h16
  3. Problème synchronisation base: START SLAVE
    Par Carter dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 21/09/2006, 10h19
  4. Problème synchronisation threads
    Par Linio dans le forum Concurrence et multi-thread
    Réponses: 19
    Dernier message: 11/01/2006, 16h57
  5. [Perl]problème avec fork
    Par LE NEINDRE dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 23/09/2005, 15h31

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