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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| #include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define lire 0
#define ecrire 1
main()
{
printf("Salut ! \n");
int NBFILS = fork();
int status;
int TUBE2[2],TUBE1[2];
int n;
pipe(TUBE2);
pipe(TUBE1);
if(NBFILS == -1)
{
printf("Création processus impossible");
exit(0);
}
if(NBFILS ==0)
{
int valF=15;
printf("F->Fils 1 PID : %d Père PID : %d \n",getpid(),getppid());
int tempo = valF;
//---1 Le fils envoie la valeur 15
close(TUBE1[lire]);
write(TUBE1[ecrire],&tempo,sizeof(tempo));
printf("F->Valeur de ValF : %d\n",tempo);
//---4 Le fils lit le contenu du tube
close(TUBE2[ecrire]);
read(TUBE2[lire],&tempo,sizeof(tempo));
printf("F -> Nouvelle valeur tempo : %d \n",tempo);
//----4 FIN---------------------+
exit(1);
}
else
{
int valP;
printf("Père PID : %d\n",getpid());
//valP=18;
printf("Avant écriture \n");
//-------
//---2 Le père lit le contenu du tube
close(TUBE1[ecrire]);
read(TUBE1[lire],&valP,sizeof(valP));
printf("Valeur n %d\n",valP);
//---2 FIN----------
//----3 Le père
valP=7;
close(TUBE2[lire]);
write(TUBE2[ecrire],&valp,sizeof(valP));
//-----3 FIN-----------
//-----attend la fin du fils
wait(&status);
printf("PERE : mon fils %d a fini\n",(int) status/256);
//------
}
return(0);
} |
Partager