Académique Documents
Professionnel Documents
Culture Documents
Serie4 Os s4 Isil 2024
Serie4 Os s4 Isil 2024
Exercice 1
Soit le programme suivant :
1. #include <signal.h>
2. #include <stdio.h>
3. #include <unistd.h>
4. void gestion_signal (int sig) {
5. printf ("Signal reçu %d\n", sig);
6. signal (SIGINT, SIG_DFL);
7. }
8. int main() {
9. signal (SIGINT, gestion_signal);
10. while(1) {
11. printf("Bonjour\n");
12. sleep(1);
13. }
14. return 0;
15. }
1/2
2. Est-ce que le programme affiche la même chose chaque fois qu’il est exécuté ?
3. Si la réponse à la question précédente est Oui, donner la valeur de la variable cpt. Si la
réponse est Non, lister toutes les valeurs possibles de la variable cpt.
Exercice 3
Soit le programme suivant :
1. #include <unistd.h>
2. #include <sys/types.h>
3. #include <sys/wait.h>
4. #include<stdio.h>
5. #include <signal.h>
6. #define N 5
7. /*0*/
8. int main() {
9. pid_t pid[N];
10. int i ;
11. /*1*/
12. for (i=0; i<N;i++)
13. if ((pid[i]=fork())==0) {
14. /*2*/
15. while(1)
16. printf("ici fils %d ", i);
17. }
18. /*3*/
19. }
On veut que le processus père utilise les signaux SIGSTOP et SIGCONT pour,
respectivement, suspendre (bloquer) et reprendre (débloquer) l’exécution de ses processus
fils. Au départ, tous les processus fils créés doivent se mettre en pause.
Le processus père répète continuellement le traitement suivant en commençant par le
premier fils : il envoie le signal SIGCONT à un fils puis s’endort pendant une (01) seconde. À
son réveil, il envoie SIGSTOP au même fils et SIGCONT au fils suivant (le fils suivant du
dernier est le premier).
Lorsqu’un processus fils reçoit le signal SIGCONT, il affiche le message indiquant qu’il a
capturé le signal SIGCONT avant de poursuive son exécution.
1. Compléter le code précédent de manière à réaliser ce traitement.
2/2