[C] Tablures et tuyaux
Fermé
Stéphanie
-
24 juin 2006 à 16:52
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 - 25 juin 2006 à 11:26
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 - 25 juin 2006 à 11:26
3 réponses
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
507
24 juin 2006 à 17:16
24 juin 2006 à 17:16
Salut,
Commences par faire un schéma en dessinant chaque processus par une patate
ou tu repères pour chaque processus l'entrée standard (sur la gauche) et les
sorties standard et d'erreur sur la droite.
Ensuite tu représentes les flux unidirectionnels de dialogue (une sortie d'un
processus vers l'entrée d'un autre) en indiquant ce qui passe : un nombre,
un nombre pair, etc...
Par la suite, le programme qui va lancer tout-ça devra s'occuper de créer
les tubes et d'affecter au besoin les entrées et les sorties sur les tubes (en réalité
c'est une duplication de file descripteur) :
Si tu es sous UNIX :
- créer un processus fork()
- créer un tube : pipe()
- dupliquer des file descriptors : dup() ou dup2()
- se remplacer par un autre processus : exec()
L'avantage d'une telle solution c'est qu'il n'y a que le lanceur qui est
complexe, les autres c'est des processus simples.
A+, crabs
Commences par faire un schéma en dessinant chaque processus par une patate
ou tu repères pour chaque processus l'entrée standard (sur la gauche) et les
sorties standard et d'erreur sur la droite.
Ensuite tu représentes les flux unidirectionnels de dialogue (une sortie d'un
processus vers l'entrée d'un autre) en indiquant ce qui passe : un nombre,
un nombre pair, etc...
Par la suite, le programme qui va lancer tout-ça devra s'occuper de créer
les tubes et d'affecter au besoin les entrées et les sorties sur les tubes (en réalité
c'est une duplication de file descripteur) :
Si tu es sous UNIX :
- créer un processus fork()
- créer un tube : pipe()
- dupliquer des file descriptors : dup() ou dup2()
- se remplacer par un autre processus : exec()
L'avantage d'une telle solution c'est qu'il n'y a que le lanceur qui est
complexe, les autres c'est des processus simples.
A+, crabs
Bonjour,
Ce que je ne comprends pas c'est comment on récupère les chiffres de la fonction allea pour les redirigés sur la sortie standart ou erreur standart selon le chiffre que l'on obtient
Ce que je ne comprends pas c'est comment on récupère les chiffres de la fonction allea pour les redirigés sur la sortie standart ou erreur standart selon le chiffre que l'on obtient
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
507
25 juin 2006 à 11:26
25 juin 2006 à 11:26
Salut,
Pour la sortie standard :
Pour la sortie d'erreur, il faut remplacer 1 par 2.
Pour tester si le nombre est pair
A+, crabs
Pour la sortie standard :
int nb ; nb = allea() ; write( 1, &nb, sizeof( int ) ) ;
Pour la sortie d'erreur, il faut remplacer 1 par 2.
Pour tester si le nombre est pair
if ( nb % 2 == 0 ) { /* traitement pour un nombre pair */ } else { /* traitement pour le nombre impair */ }
A+, crabs