Explication de ce programme

Signaler
Messages postés
6
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
22 mai 2008
-
 Utilisateur anonyme -
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

Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
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

Et c'est en Unix

When the rich wage war, it's the poor who die.
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
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
Messages postés
6
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
22 mai 2008

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.

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.