Communication entre pere et fils , processus
na7lae
-
na7lae -
na7lae -
Bonjour,
on nous a demander de créer un processus qui communique avec son fils par pipes. Il envoie par pipe des messages au fils qui les affiche sur écran. le père doit attendre son fils.
j'ai tapé un code mais ça ne m'affiche rien ( juste 3 points d'interrogation ):
1 #include<unistd.h>
2 #include<stdlib.h>
3 #include<stdio.h>
4 #define TAILLE 10
5 main()
6 { char systeme[TAILLE];
7 int p[2], i;
8 char *systeme1= "Unix";
9 char *systeme2= "VMS";
10 char *systeme3= "Windows";
11
12 int x;
13 x=fork();
14 if(x<0)
15 { printf(" erreur");
16 }
17 if (pipe(p)<0)
18 {
19 printf(" erreur d'ouverture du pipe!");
20 exit(1);
21 }
22
23 if(x>0)
24 { /*ferme en lecture*/
25 close(p[0]);
26
27 /*ecriture dans le pipe*/
28 write(p[1] ,systeme1, TAILLE);
29 write(p[1], systeme2, TAILLE);
30 write(p[1], systeme3, TAILLE);
31 wait(NULL);
32 }
33 else
34 close(p[1]);
35 /*lecture du pipe*/
36 for(i=0; i<3; i++)
37 { read(p[0], systeme, TAILLE);
38 printf("%s\n" ,systeme);
39 }
40 exit(0);
1,1 Haut
quel est le problème??
on nous a demander de créer un processus qui communique avec son fils par pipes. Il envoie par pipe des messages au fils qui les affiche sur écran. le père doit attendre son fils.
j'ai tapé un code mais ça ne m'affiche rien ( juste 3 points d'interrogation ):
1 #include<unistd.h>
2 #include<stdlib.h>
3 #include<stdio.h>
4 #define TAILLE 10
5 main()
6 { char systeme[TAILLE];
7 int p[2], i;
8 char *systeme1= "Unix";
9 char *systeme2= "VMS";
10 char *systeme3= "Windows";
11
12 int x;
13 x=fork();
14 if(x<0)
15 { printf(" erreur");
16 }
17 if (pipe(p)<0)
18 {
19 printf(" erreur d'ouverture du pipe!");
20 exit(1);
21 }
22
23 if(x>0)
24 { /*ferme en lecture*/
25 close(p[0]);
26
27 /*ecriture dans le pipe*/
28 write(p[1] ,systeme1, TAILLE);
29 write(p[1], systeme2, TAILLE);
30 write(p[1], systeme3, TAILLE);
31 wait(NULL);
32 }
33 else
34 close(p[1]);
35 /*lecture du pipe*/
36 for(i=0; i<3; i++)
37 { read(p[0], systeme, TAILLE);
38 printf("%s\n" ,systeme);
39 }
40 exit(0);
1,1 Haut
quel est le problème??
A voir également:
- Communication entre pere et fils , processus
- Numero pere noel - Accueil - Applis & Sites
- Processus inactif du systeme - Forum Matériel & Système
- Simulateur voix du père noël ✓ - Forum Loisirs / Divertissements
- Branchement prise téléphone adsl 4 fils ✓ - Forum câblage
- Schéma câblage coffret communication fibre - Forum câblage
1 réponse
Dans le père
X aura la valeur du pid du fils
dans le fils
X aura une valeur aleatoire en mémoire car tu n'initialise pas cette variable.
Je serais toi je metterais un :
int ppid= getpid();
int x=fork();
if(getpid()==ppid){ // je suis dans le père
// code du père
}
else { // je suis dans le fils
// Code du fils
}
;)
" Votre temps est limité, ne le gâchez pas en menant une existence qui n'est pas la vôtre. " S.Jobs
X aura la valeur du pid du fils
dans le fils
X aura une valeur aleatoire en mémoire car tu n'initialise pas cette variable.
Je serais toi je metterais un :
int ppid= getpid();
int x=fork();
if(getpid()==ppid){ // je suis dans le père
// code du père
}
else { // je suis dans le fils
// Code du fils
}
;)
" Votre temps est limité, ne le gâchez pas en menant une existence qui n'est pas la vôtre. " S.Jobs
na7lae
merci :)