Académique Documents
Professionnel Documents
Culture Documents
Exercice 5:
a) 1. le programme cree un processus fils1
5. le processus principal attend que les deux processus fils se terminent avant d’afficher « fin du
père »
6. Le resumee, Ce programme realise une communication entre les deux processus fils a travers
un tube
b) Le processus parent ne fermera pas le sortie du tube , ce qui pourrait entrainer un blocage lors
de la lecture du tube dans le proccesus enfant .
c) #include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <wait.h>
printf("\n");
close(sortie);
wait(NULL);
}
un = 2 * un2 + 3 * un1;
write(sortie, &un1, sizeof(un1));
write(sortie, &un, sizeof(un));
} while (un <= 200);
close(sortie);
}
int main(void) {
int tube_pe[2], tube_ep[2], pid;
printf("[%d]: début du père.\n", getpid());
Exercice 6 :
Il y a deux erreurs :
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
static int n = 0;
int main(void) {
int pf[2], fp[2];
struct sigaction action;
action.sa_flags = 0;
sigemptyset(&action.sa_mask);
switch (fork()) {
case -1:
erreur("fork");
case 0: /* Fils */
close(fp[0]);
close(pf[1]);
iteration(pf[0], fp[1]);
break; // Ajout de la ligne break pour éviter l'exécution du code du père par le fils
default: /* Pere */
action.sa_handler = interruption;
sigaction(SIGINT, &action, NULL);
close(pf[0]);
close(fp[1]);
iteration(fp[0], pf[1]);
return 0; // Ajout de la ligne return pour éviter l'exécution du code du père après l'interruption
}
exit(EXIT_FAILURE);
}
ce programme semble mettre en place une boucle infinie de communication entre le père et le
fils, permettant l'incrémentation d'une variable n.