Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/06/2006, à 16: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, à 17: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, à 02: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, à 23:27

Stéphanie

Re : [C] Tablures et tuyaux

Salut,

est-ce que quelqu'un pourrait me donner plus de précisions ?

Merci

#5 Le 26/06/2006, à 00: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, à 12: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, à 12:18)


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne