Pages : 1
#1 Le 24/06/2006, à 15:56
- Stéphanie
[C] Tablures et tuyaux
Bonjour,
j'essaye de faire un exo mais je n'arrive pas à le démarrer.
Si vous pouviez m'indiquer comment m'y prendre.
Merci d'avance
On veut tester une fonction de génération aléatoire d'entiers (allea) et l'on veut savoir si la somme des nombres entiers produits est égales à la somme des nombres impairs produits et ce pour 10 000 tirages.
Le prototype de la fonction est : int allea(); nous est fournis dans une librairie partagée allea.so
Le processus P1 écrit 10 000 nombres produit par allea sur la sortie standart.
Le processus P2 lit des nombres sur l'entrée standart et écrit les nombres pairs sur la sortie standart et les nombres impairs sur la sortie erreur standart.
Les processus P3 et P4 somment l'ensemble des nombres lus sur l'entrée standart et écrivent la somme sur la sortie standart.
Le processus P5 lit 2 nombres sur l'entrée standart et les comparent. Si ils sont égaux, l'exit status sera zéro et un si ils sont différents.1)Ecrire le programme de l'executable Pi
2)Ecrire le programme qui lance l'ensemble des processus, créer les tubes et réalise les bonnes connections avec fermeture de tous les descripteurs inutiles.
3)Ecrire les commandes de compilation.
T
#2 Le 24/06/2006, à 16:02
- Kiraa
Re : [C] Tablures et tuyaux
sur quoi tu bloques ?
je peu pas te donner d'aide au niveau coding vu que j'ai jamais trop touché o c mais je peu toujours dire les marches à suivres ~
(5 processus pour faire un truc comme ça , wow >>)
Hors ligne
#3 Le 25/06/2006, à 01:35
- Avavrin
Re : [C] Tablures et tuyaux
Yop,
Si tu a des connaissances en C,
Tu fais des forks pour qu'il y ai 5 processus, ou bien tu fait des threads mais je pense que des forks ca suffit.
Au debut de chaques forks tu fermes les bonnes extremités du tube que t'as declaré avant le fork, et tu codes ensuites ce qui est dit dans l'enoncé...
#4 Le 25/06/2006, à 22:27
- Stéphanie
Re : [C] Tablures et tuyaux
Salut,
est-ce que quelqu'un pourrait me donner plus de précisions ?
Merci
#5 Le 25/06/2006, à 23:14
- foobar2000
Re : [C] Tablures et tuyaux
Salut,
Pour creer les differents processus, tu dois utiliser fork() (man 2 fork).
Pour la communication entre les processus, c'est pipe() (man 2 pipe).
Aucun rapport avec le logiciel du même nom.
Hors ligne
#6 Le 28/06/2006, à 11:15
- gene69
Re : [C] Tablures et tuyaux
ben pour aider;
void processus1 (){
for(i=0; i<10000;i++){
printf("%d\n",allea());
}
}
même si bien sur il ne suffit pas d'appeler une fonction processus pour qu'elle se transforme ...
le fork resembe à
/* creer le tube ici, avant le fork*/
int numeroProcessus=fork()
if (numeroProcessus!=0){
/* le code du père */
}
else /*if (numeroProcessus==0){/*
/* le code du fils */
}
/* fermer le tube là par ex...*/
http://www.linux-kheops.com/doc/man/man … ork.2.html
programmer le tube (pipe) à la main c'est chiant lorqu'on sais que faire 4 executable et mettre "|" c'est magique.
Dernière modification par gene69 (Le 28/06/2006, à 11:18)
Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion
Hors ligne
Pages : 1