Files

73 lines
2.2 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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.