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 :

Communication entre processus en utilisant le langage C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mars 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 3
    Par défaut Communication entre processus en utilisant le langage C
    Bonjour tout le monde.

    Voilà, je suis nouveau dans la programmation en C et j'ai besoin d'aide pour un TP qui simule une communication entre processus père et fils.

    Il est demandé d’écrire un programme qui simule un jeu qui consiste en une devinette entre un processus père et son fils. Le père reçoit un entier à travers la ligne de commande que son processus fils va essayer de deviner en suivant les indications du père en répétant le protocole suivant :

    Le processus fils, à travers l’utilisateur, envoie un entier au processus père qui lui répond soit par le caractère ‘+’ si l’entier reçu est strictement plus grand que l’entier à deviner ou bien par le caractère ‘-’ si l’entier reçu est strictement plus petit. Si l’entier reçu et l’entier à deviner sont égaux, le père répond par le caractère ‘=’ et c’est la fin de la partie.

    La communication entre le processus père et le processus fils se fait par l’intermédiaire de pipes : l’un où le père écrit et le fils lit et l’autre où le fils écrit et le père lit. À la fin du programme, le père doit répondre par « Vous avez réussi ! »

    J'ai essayé de le résoudre mais je trouve un problème comment communiquer entre les deux processus car chacun doit attendre la réponse de l'autre.

    Merci de me répondre.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Tu dois choisir lequel "parle" en premier. Ca peut être le fils. Il commence par écrire puis lire.
    Le père commence par lire puis écrire.
    Le père et le fils font toujours une lecture après une écriture : tes deux processus deviennent synchronisés.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mars 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 3
    Par défaut
    Bonjour,

    Merci de m'avoir répondu dinobogan.

    Je suis conscient de ça, mais le hic est que je ne sais pas comment synchroniser les deux processus, es ce qu'il y'a une commende qui oblige le père ou le fils à attendre la réponse de l'un ou de l'autre?

    Dans la communication, c'est le fils qui doit entamer la discussion car la valeur que le fils doit deviner sera entrée en clavier avant d'utiliser le fork().

    Bonne journée.

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Le père et le fils vont utiliser leur propre entrée et sortie standard. La sortie du père est l'entrée du fils et l'entrée du père est la sortie du fils.
    Lorsque le fork est fait, le père se met en attente de lecture sur son entrée standard. Pendant ce temps le fils écrit sur sa sortie standard (qui est l'entrée standard du père).
    Lorsque ceci est fait, c'est au tour du fils de se mettre en attente de lecture et au père d'écrire.
    Tu dois établir un mini protocole de communication pour savoir quand le communicant doit arrêter de lire pour analyser la réponse puis se mettre à écrire. Tu pourrais par exemple transmettre une chaîne de caractères de longueur fixée à l'avance entre le fils et le père pour te simplifier la vie.
    Une autre idée serait de transmettre une structure contenant une chaîne de caractère, un entier et un booléen pour savoir si l'info est la chaîne ou l'entier.

    Pour mettre tout en place, je te conseille de faire un père et un fils qui se transmette un unique caractère. L'exemple classique dans ce genre d'exercice est le ping-pong. Une fois que la communication est fonctionnelle, alors tu auras déjà compris beaucoup de choses et il sera facile de "compliquer" le protocole de communication et de répondre complètement à l'exercice.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mars 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 3
    Par défaut
    Bon, je vais essayer de schématiser votre logique et voir ce que ça donne.
    Merci encore une fois dinobogan de m'avoir répondu.
    Je vous donnerais des nouvelles dès que j'aurais terminé.

    Bonne journée.

Discussions similaires

  1. [C#]Communication entre processus
    Par ShamSS dans le forum C#
    Réponses: 5
    Dernier message: 28/02/2009, 19h39
  2. communication entre processus
    Par gerard tarquin dans le forum Général Python
    Réponses: 12
    Dernier message: 13/06/2007, 12h29
  3. [VB.Net][Threading] Communication entre processus
    Par DonF dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/02/2006, 15h15
  4. Lecture standard et communication entre processus!
    Par Tartar Ukid dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/07/2003, 16h37
  5. Communication entre processus
    Par markopolo dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/06/2003, 16h21

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