#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>

int main(void) {
    int p[2];            // tube : p[0] lecture, p[1] écriture
    pid_t pf1, pf1f1, pf2; 

    pipe(p); 

    // --- créer Pf1 ---
    pf1 = fork();
    if (pf1 == 0) {
        // --- créer Pf1f1 ---
        pf1f1 = fork();
        if (pf1f1 == 0) {
            // Pf1f1 : lecteur
            close(p[1]);  // ne garde que la lecture
            while (1) {
                pid_t v;
                read(p[0], &v, sizeof(v)); 
                int valeur = read(p[0], &v, sizeof(v)); 
                printf("    %d received %d\n", (int)getpid(), (int)v);
                fflush(stdout);
                sleep(1);
            }
        }
       
        close(p[0]); 
        close(p[1]);
        while (1){
        	pause();
        } 
    }

    // --- créer Pf2 ---
    pf2 = fork();
    if (pf2 == 0) {
        //Pf2 : écrivain
        close(p[0]);  // ne garde que l’écriture
        pid_t cmoi = getpid();
        while (1) {
            printf("%d sent %d\n", (int)cmoi, (int)cmoi);
            fflush(stdout);
            write(p[1], &cmoi, sizeof(cmoi));
            sleep(3);
        }
    }

    //P COMME PAPA
    close(p[0]);
    close(p[1]);
    while (1){

    	pause();

    } 
    printf(valeur);
}


// Question 3 : (Envoyez le signal SIGSTOP à Pf2, puis le signal SIGCONT à Pf2)
// Pour le premiere comportement quand je stop le processus pf2 avec un kill -STOP 211912 alors mon programme est comme en pause c'est normal car l'action du prcessus de pf1f1 dependait du tube qui relie donc comme il a rien a recevoir il attend.
// Puis quand j'utilise SIGCONT le programme se debloque car le pf2 n'est plus gélé donc le pf1f1 peut lire les informations qu'on lui donne.

//(Envoyez le signal SIGSTOP à Pf1f1, puis le signal SIGCONT à Pf1f1.)
//Lors du moment ou j'ai envoyer ce signal le processus pf2 continue d'envoyé ses information au processus pf1f1 sauf que lui comme il est gelé ne reagit pas à sa "requete".
// Puis ainsi il rattrape tous ces requetes qui n'a pas pu repondre et du coup comme il est plus rapide que pf2 a la relance il a recup tous les pid possible comme dans le tube il etait rempli de ça donc il a lu les pid qui était la dans le tube.



