:: Enseignements :: Licence :: L3 :: 2016-2017 :: Programmation système en C ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Fichiers et signaux |
Exercice 1 - My cat
-
Utiliser l'appel système open() pour ouvrir un fichier qui sera
spécifié sur la ligne de commande. Lire les 10 premiers octets du
fichier avec l'appel système read(), puis les afficher sur la
sortie standard en utilisant write(). Utiliser un buffer
statique. Rappel : 0=stdin, 1=stdout,
2=stderr.
-
Toujours en utilisant un buffer statique, écrire un programme
fonctionnant comme cat, c'est-à-dire ouvrant un par un les
fichiers spécifiés sur la ligne de commande, les lisant, et les écrivant
sur la sortie standard.
Exercice 2 - My cp
Réécrire un programme
cp simple (copie d'un fichier vers un autre).
Pour créer le fichier "cible", n'oubliez pas d'utiliser les flags
O_CREAT,
O_TRUNC, et le troisième paramètre de
open(), pour positionner correctement les droits du fichier
nouvellement créé (regardez ce qui se passe si vous ne mettez pas cet
argument).
Exercice 3 - Highlander
Écrire un programme qui "résiste" au signal
SIGINT (rappel: c'est
ce signal qui est envoyé lorsque vous tapez
Control-C dans le
terminal). Pour cela utiliser l'appel système
signal().
Exercice 4 - Highlander II
Réécrire le programme précédent avec l'appel système
sigaction().
Pour manipuler des
sigset_t, consultez la manpage
sigsetops (il faudra utiliser au moins
sigemptyset()).
Exercice 5 - Bonus 1: speed-O-meter
Écrire un speed-o-meter, un programme qui mesure la vitesse à laquelle on
lui envoie des données (par l'entrée standard), en octets par seconde.
Exercice 6 - Bonus 2: shaper
Écrire un shaper, un programme qui lit sur l'entrée standard et écrit sur la
sortie standard, mais n'écrit pas plus vite qu'une certaine vitesse
spécifiée en octets par seconde.
© Université de Marne-la-Vallée