Explication de ce programme

bounkolh Messages postés 6 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 22 mai 2008 - 19 mai 2008 à 13:34
 Utilisateur anonyme - 20 mai 2008 à 13:54
Bonjour est ce que quelqu'un peut m'expliquer le déroulement de ce programme svp?

#include <stdio.h>
#include
int main(int argc, char *argv[ ]) {
int tube[2];
char buf;

pipe (tube);

if (fork()) {
write(tube[1], ”Bonjour\n”, 8);
}
else {
while(read(tube[0], &buf, 1)) {
write (STDOUT_FILENO, &buf, 1);
}
}
return 0;
}

5 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
19 mai 2008 à 13:51
Salut
La principal difficulte de ce programme vient du fork().
Il faut bien comprendre le fonctionnement de cette fonction avant de commencer: fork va dubliquer a l'identique le processus tel qu'il est avant l'appel du fork. On aura donc un processus pere et un processus fils qui vont executer du code suivant le retour de la fonction fork.
Ici le processus pere va executer les lignes du if et le processus fils les lignes du else.

Mais une chose est importante a comprendre, si le processus fils modifie la variable Buf, cette modification ne sera pas vu par le processus pere.

Pour ce programme, on commence a creer un pipe de communication (avant le fork pour que les deux processus puisse le voir), puis le pere va ecrir un message dans le pipe qui sera lu et ecrit dans la sortie standard par le fils.

Voila j'espere avoir ete clair.

A+
Mon site internet : http://pistol.petesampras.free.fr
0
Utilisateur anonyme
19 mai 2008 à 15:24
Et c'est en Unix

When the rich wage war, it's the poor who die.
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
19 mai 2008 à 16:25
Oui Blinix123, bien sur que l'on est dans le monde Unix avec les pipes et les fork. Je n'ai pas juger necessaire de le preciser dans mon premier message tellement c'etait evident pour moi.

En tout cas, j'espere que bounkolh en etait convaincu.

A+
Mon site internet : http://pistol.petesampras.free.fr
0
bounkolh Messages postés 6 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 22 mai 2008
19 mai 2008 à 17:00
Oui et merci beaucoup; en fait j'en avais une d'explication et me rend compte que je ne suis pas trés loin de toi.

Oui on est dans le monde d'Unix.

Merci c vraiment sympa
B.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
20 mai 2008 à 13:54
Non mais comme ca si quelqu'un passe par la et qu'il ne connait pas trop il sait que c'est en Unix, rien de méchant ^^

When the rich wage war, it's the poor who die.
0
Rejoignez-nous