1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
#include <stdio.h>
#include <unistd.h>
#include <wait.h>
int main() {
int n, p[2], p2[2];
char c, c2;
//creation des tube anonyme
if ( pipe(p) != 0 ) {
perror ("probleme appel pipe");
exit (1);
}
if ( pipe(p2) != 0 ) {
perror ("probleme appel pipe");
exit (2);
}
//on clone le process pour avoir 2 processus partageant le m?me pipe
if ( ( n = fork() ) == -1 ) {
perror ("probleme appel fork");
exit (3);
} else if ( n == 0 ){ //le fils
char texte2[30];
int j;
printf("Veuillez taper deux nombres en les sÈparant d'un espace puis appuyez sur entrÈe");
dup2 (p[1],1);
close (p[0]);
close (p[1]);
close (p2[1]);
execl ("./lire","./lire",NULL);
j = 0;
while ( read (p2[0], &c2, 1) != 0 ){
texte2[j++] = c2;
}
close(p2[0]);
texte2[j-1] = 0;
printf("L'addition des deux nombre donne %s", texte2);
}
else { // le pËre
char texte[30];
int i;
close (p[1]);
close (p2[0]);
i = 0;
while ( read (p[0], &c, 1) != 0 ){
texte[i++] = c;
}
close(p[0]);
texte[i-1] = 0;
printf("les nombres sont %s", texte);
dup2 (p2[1],1);
close (p2[1]);
execl ("./calcul", "./calcul", texte);
}
} |
Partager