Fork et programmation C

Résolu
Enness Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   -  
Enness Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je viens ici parce que je n'en peut plus !!!!
Voila je ne suis pas du tout habituer au systeme UNIX et j'ai un TP à faire dessus.

En résumé, je dois créer 11 processus qui, à partir d'un nombre (<1000) entré par l'utilisateur doit vérifier si celui ci est premier.
En fait on stocke les nombre premiers (inférieur a 31) dans un tableau de 11 case et chaque processus doit verifier si le nombre entré par l'utilisateur est divisible par le nombre qui lui est associé.

En clair le processus 1 essaye de diviser par 1, le proc. 2 par 3, le proc. par 5....le proc 11 par 31.
Si le nombre n'est pas divisible par le chiffre associé au processus, on affiche rien, sinon on affiche "le nombre n'est pas premier".


Ma question porte surtout sur le fork et comment engendré les 11 processus et pour associer chacun d'eux au nombre du tableau.

Si qqun peu m'aider parce que j'ai TOUT essayer et rien ne marche...

Merci d'avance.

A voir également:

3 réponses

Enness Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
 
Up si qqun pouvait m'aider...Comment générer 11 fork provenant du même père...
0
chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
salut,
tu peux essayer cela:
#include<stdio.h>  
#include<sys/types.h>  
#include<unistd.h>  
#include <sys/wait.h>   
#define uchar unsigned char  
#define NB_PROCESS 11 
int main()  
{  
 uchar bcl=0;  
 int nb;  
 int pidF[NB_PROCESS];  
 uchar tab[NB_PROCESS]={1,2,3,5,7,11,13,17,19,23,31};  
 printf("Entrer un nb: \n");  
 scanf("%d",&nb);  
for (bcl=0;bcl<NB_PROCESS;bcl++){  
  if ((pidF[bcl]=fork())==0){  
   sleep(1);  
   if (nb%tab[bcl]){  
 printf("Je ne divise pas %d par %d et je suis le process %d\n",nb,tab[bcl],getpid());  
   }  
   else{  
 printf("Je divise %d par %d et je suis le process %d\n",nb,tab[bcl],getpid());  
   }  
   _exit(0);  
 }  
 else{  
  printf("je suis le pere process %d et creation de %d\n",getpid(),pidF[bcl]);  
  //  
}  
}  
waitpid(pidF[0], NULL, 0);   
waitpid(pidF[1], NULL, 0);   
waitpid(pidF[2], NULL, 0);   
waitpid(pidF[3], NULL, 0);   
waitpid(pidF[4], NULL, 0);   
waitpid(pidF[5], NULL, 0);   
waitpid(pidF[6], NULL, 0);   
waitpid(pidF[7], NULL, 0);   
waitpid(pidF[8], NULL, 0);   
waitpid(pidF[9], NULL, 0);   
waitpid(pidF[10], NULL, 0);  
return 0;  
}  

Il faudrait que tu geres les erreurs de creation etc...mais je pense que ca te permettra d'avancer un peu...
Sur un malentendu, ca peut marcher!!
0
Enness Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
 
Je vais tester tout ca, franchement merci beaucoup, parce que là j'etais au bout du rouleau...:))
0