Aide programmes langage C - C - Programmation
Marsh Posté le 15-06-2007 à 16:34:18
ReplyMarsh Posté le 15-06-2007 à 16:41:04
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.
Marsh Posté le 15-06-2007 à 17:02:23
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 ????
Marsh Posté le 15-06-2007 à 17:08:19
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());
Marsh Posté le 15-06-2007 à 16:32:31
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);
}