Séance notée - 22/04/2024
Exercice 0 : Manipulation de fichiers à l'aide d'appels système
Pour les besoins de cet exercice, limitez-vous à l'utilisation des appels
système E/S comme open(), close(), creat(), read(), write(), lseek()
.
L'utilisation de la bibliothèque stdio
sera pénalisée.
-
Problème 0 : Ecrivez un programme C qui prend en argument un nom de fichier
f
(correspondant à un fichier supposé exister dans le répertoire de travail courant) et crée un nouveau fichier, dont le nom estf
préfixé parcopy_of_
. Le nouveau fichier doit contenir l'intégralité du contenu def
. -
Problème 1 : Modifiez le programme ci-dessus pour que le contenu du nouveau fichier préfixé par
copy_of_
soit celui def
mais dans l'ordre inverse de leur ordre d'origine.
Exercice 1 : Fork et thread
-
Problème 0 : Ecrivez un programme C qui crée deux processus enfants tels que :
- Le premier processus enfant lance
cat
sur un fichier de votre choix. - Le second récupère les résultats (via un pipe, par exemple) du premier
et exécute
wc -l
sur eux, les résultats étant imprimés dans la sortie standard. - Le parent imprime finalement les identifiants des processus des deux enfants et quitte.
- Le premier processus enfant lance
-
Problème 1 : Ecrivez un programme C qui crée un tableau d'entiers de taille
ARRAY_SIZE
(une constante que vous devez définir). Il lance ensuite deux threads qui calculent chacun la somme pour la première et la seconde moitié du tableau, respectivement. Le programme imprime ensuite la somme totale et quitte.
Exercice 2 : application client-serveur
-
Problème 0 : Créez un programme serveur-client en C, utilisant des sockets réseau (IPv4 ou IPv6, datagramme ou flux), tel que :
- Les clients communiquent un nom de fichier au serveur.
- Le serveur vérifie si un fichier portant le nom de fichier donné existe dans le répertoire de travail actuel et répond au client avec l'intégralité du contenu du fichier, soit avec un message d'erreur approprié.
Des points bonus seront attribués si votre serveur peut gérer plusieurs clients en parallèle.