:: Enseignements :: ESIPE :: INFO2 :: 2014-2015 :: Programmation système en C ::
[LOGO]

Fichiers et signaux


Exercice 1 - My cat

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(). Compilez votre code avec et sans l'option -ansi, et comparez les comportements à l'exécution. Que se passe-t-il ?

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.