Vous êtes sur la page 1sur 2

FIT 3 [INF322] 2011/12

Systmes dexploitation
Vincent Labatut
Universit Galatasaray

TP 6

interruptions et signaux

1 Signaux clavier
Exercice 1
crivez un programme qui gre les interruptions correspondant aux signaux SIGINT (Control+C) et SIGTSTP (Control+Z). Le programme ne fait quattendre de recevoir un signal : quand il reoit SIGTSTP, il doit afficher quil a reu ce signal et recommencer attendre. quand il reoit SIGINT, il doit afficher quil a bien reu ce signal, et se terminer. Vous devez dabord crire une fonction qui servira de handler, et qui devra ragir ces signaux. Dans le programme principal, vous devez dfinir une structure sigaction qui dsignera le handler et le masque utiliss. Lancez ce programme en arrire plan depuis la console (rappel : executable &), et testez-le en utilisant Control+C et Control+Z. exemple daffichage :
10651>je suis pret > ^Z 10651>jai reu le > ^Z 10651>jai reu le > ^C 10651>jai reu le ! signal SIGSTP, je reprends lattente signal SIGSTP, je reprends lattente signal SIGINT, je me termine

Exercice 2
Ecrivez un programme qui demande lutilisateur dentrer un entier positif au clavier. Si lutilisateur na pas donn de valeur au bout de 2 secondes, le programme doit lui reposer la question (utilisez la fonction alarm).

2 Signaux programms
Exercice 3
crivez un programme qui cre un processus fils. Le processus pre doit effectuer les actions suivantes : il attend (pause) de recevoir un signal SIGUSR1. il affiche un message indiquant quil a reu le signal. il recommence attendre un autre signal. il se termine quand il reoit le 10me signal. Le processus fils doit effectuer les actions suivantes : il attend (sleep) pendant un temps alatoire (mais pas trop longtemps). il envoie (kill) un signal SIGUSR1 son pre. il affiche un message indiquant quil a envoy un signal.

Systmes dexploitation

FIT 3 [INF322] 2011/12

TP 6 1/2

interruptions et signaux

il se termine quand il a envoy le 10me signal.

Exercice 4
Dans le TP sur la cration de processus, lexercice 3 consistait crire un programme C qui crait deux processus : le premier affichait les nombres de 0 49 et le deuxime de 50 99. Le problme tait que suivant lordonnancement des processus, on naura pas toujours un affichage des nombres dans lordre 099, suivant si le premier fils est excut avant ou aprs le second. Pour rsoudre ce problme, nous allons utiliser des signaux. A partir de lancien programme, crivez un programme exercice4.c dans lequel : le premier fils attend (pause) de recevoir le signal SIGUSR1 avant de commencer son affichage. le second fils affiche les nombres de 0 49. le second fils envoie (kill) un signal au premier. le premier fils affiche les nombres de 50 99.

Systmes dexploitation

FIT 3 [INF322] 2011/12

TP 6 2/2