Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2303 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Aide programmes langage C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide programmes langage C

n°1575632
perezlyon
Posté le 15-06-2007 à 16:32:31  profilanswer
 

Bonjour à Tous :)  
 
Je débute en programmation, notre prof nous a donné un programme à analyser, je ne pense pas avoir compris donc je me tourne vers vous pour obtenir de l'aide. Merci par avance
 
voici le code du programme :
 
int main()
{          int fd[2], i=2;
           char ch[100];
           while (i)
          {   pipe(fd);
               if(fork())
              {   close(fd[0]);
                  dup2(fd[1],1);
                  close(fd[1]);
                  break;
              }else
              {    close (fd[1]);
                    dup2(fd[0],0);
                    close(fd[0]);
              }
             i--;
           }
scanf("%s",ch);
printf('%s/n",ch);
exit(0);
}

mood
Publicité
Posté le 15-06-2007 à 16:32:31  profilanswer
 

n°1575634
_darkalt3_
Proctopathe
Posté le 15-06-2007 à 16:34:18  profilanswer
 

Pas de question, pas de réponse.


---------------
Töp of the plöp
n°1575638
perezlyon
Posté le 15-06-2007 à 16:41:04  profilanswer
 

Ok je me lance mais justement comme je l'ai a mon avis g pas compris le sens du programme.
 
il s'agit d'un echange de communication entre un processus pere et un processus fils via un pipe (tube) par contre il n'y a pas de read no de write, chui perdu.
 

n°1575654
perezlyon
Posté le 15-06-2007 à 17:02:23  profilanswer
 

Le pere ouvre un tube de communication en utilisant la fonction pipe(fd) ?
si création d'un processus fils je ferme la lecture et j'ecris (quoi je sais pas ) ensuite je ferme en ecriture puis je ferme la boucle avec la commande break.  
Sinon je ferme le canal en ecriture mais j'ouvre en lecture (idem de quoi ?)  
ensuite je ferme la lecture.
Au final affichage des valeurs du tableau ch ????

n°1575659
matafan
Posté le 15-06-2007 à 17:08:19  profilanswer
 

Si je ne m'abuse c'est un manifique deadlock entre 3 processes. Ca m'étonnerait que ce soit ce que le prof voulait.
 
Pas de write effectivement... Mais des dup2 et des scanf/printf. Regarde ce que fait dup2.
 
Edit : ah non pardon en fait ça deadlock pas si tu donnes quelque chose à manger au père.
 
Edit 2 ; si tu veux voir un peu ce qui se passe, remplace le printf par : printf("(%s-%d)\n", ch, getpid());


Message édité par matafan le 15-06-2007 à 17:20:52
n°1575672
perezlyon
Posté le 15-06-2007 à 17:21:23  profilanswer
 

merci bcp pour ta réponse


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Aide programmes langage C

 

Sujets relatifs
Besoin aide en PHP,lister un fichier[AIDE] : comment insérer un tag de stats dans Typepad ?
flash besoin d'aide uregent!![Aide] Le chiffrement sur 128 bits ?
[AIDE](z moi)Simulation de Clavier à partir de rienLangage multi-plateforme
AIDE TAF POUR ECOLE structure XHTML très urgentA l'aide ! erreur totalemnt incompréhensible en svg
[aide] probleme de bouclebesoin d aide en matlab pr la data acquisition toolbox
Plus de sujets relatifs à : Aide programmes langage C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR