| 12
 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