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 -
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.
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:
- Fork et programmation C
- Application de programmation - Guide
- Programmation envoi sms - Guide
- Programmation vb - Télécharger - Langages
- Programmation binaire - Guide
- Différence entre programme et programme x86 - Forum Windows 10
3 réponses
salut,
tu peux essayer cela:
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!!
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!!