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 :

communication entre le pere et ses fils


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Par défaut communication entre le pere et ses fils
    Bonjour,

    jé fé un programme ki a le principe suivant (je vé mettre le code au dessous) : a chake foi qu'une socket client se connecte au serveur , j'incremente une variable nb (le nombre de sockets clients connécté) é je fé un fork pour traité ce client , je voudrai savoir comment faire pour qu'a chaque fois ke j'incremente la variable nb , tt les processus fils creer auparavant fasse la maj de leur variable nb (le pere informe tt ces fils de la maj), je ne pe utiliser ke les fichiers, signaux ou les pipes on cas extreme, voici la portion du code abrégé avec les commentaire :
    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
     
    while (1)
    {
     // je teste s'il ya une socket ki c connécté
      nsd = accept(sd, , );
     // si c le cas j'incremente nb
      nb++
     // j'ecri dan le fichier la valeur de nb
      write(f,&nb,sizeof(int));
     
    pid = fork();
    if (pid = = 0)
    {
      // code du fils
    // je doi executer le code 1 si seulement nb a été modifée dan le pere
     //code 1
      {
         // lire ce k'il ya dan le fch
         read(f,&nb,sizeof(int);
       }
    //code 2
    {
      // autre traitement
    }
     
     
    } // fin du while
    coment faire pour executer le code 1 seulement si le pere a incrementer le nb (avec les signaux et fichiers) ?

    Merci

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par facilus68
    jé fé un programme ki a le principe suivant (je vé mettre le code au dessous) : a chake foi qu'une socket client se connecte au serveur , j'incremente une variable nb (le nombre de sockets clients connécté) é je fé un fork pour traité ce client , je voudrai savoir comment faire pour qu'a chaque fois ke j'incremente la variable nb , tt les processus fils creer auparavant fasse la maj de leur variable nb (le pere informe tt ces fils de la maj), je ne pe utiliser ke les fichiers, signaux ou les pipes on cas extreme, voici la portion du code abrégé avec les commentaire :
    Merci
    Bonjour et bienvenue sur les forums de developpez.com,

    L'utilisation du langage SMS est contre les régles de ce forum comme tu pourras le voir ici :

    http://club.developpez.com/regles/#L4.3


    Jc

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Par défaut je corrige
    j'espere que je me trempe pas cette fois :

    j'ai fais un programme qui a le principe suivant (je vais mettre le code au dessous) : a chaque fois qu'une socket client se connecte au serveur , j'incremente une variable nb (le nombre de sockets clients connécté) et je fais un fork pour traité ce client , je voudrais savoir comment faire pour qu'a chaque fois que j'incremente la variable nb , tout les processus fils creer auparavant fasse la mis-a-jour de leur variables nb (le pere informe tout ces fils de la mis-a-jour), je ne peut utiliser que les fichiers, signaux ou les pipes on cas extreme, voici la portion du code abrégé avec les commentaire :
    Merci
    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
     
    while (1)
    {
     // je teste s'il y'a une socket qui c'est connécté
      nsd = accept(sd, , );
     // si c'est le cas j'incremente nb
      nb++
     // j'ecris dans le fichier la valeur de nb
       write(f,&nb,sizeof(int));
     
    // si nb = 1 je crée un fils
     
    pid = fork();
    if (pid = = 0)
    {
      // code du fils
    // je dois executer le code 1 si seulement nb a été modifée dans le pere
     //code 1
      {
         // lire ce qu'il y'a dans le fichier
         read(f,&nb,sizeof(int);
       }
    //code 2
    {
      // autre traitement
    }
     
    }
     
    } // fin du while

Discussions similaires

  1. Communication entre deux processus pere-fils bloquante
    Par joffrey575 dans le forum Unix
    Réponses: 0
    Dernier message: 13/04/2015, 20h39
  2. Communication d'un processus avec ses deux fils
    Par seanbean dans le forum Linux
    Réponses: 3
    Dernier message: 09/05/2012, 08h03
  3. Réponses: 3
    Dernier message: 15/01/2010, 14h49
  4. Réponses: 6
    Dernier message: 17/12/2007, 16h16
  5. fork : créer UN fifo entre le père et SES fils
    Par ankou29666 dans le forum Langage
    Réponses: 3
    Dernier message: 09/09/2007, 17h33

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