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 est f préfixé par copy_of_. Le nouveau fichier doit contenir l'intégralité du contenu de f.

  • Problème 1 : Modifiez le programme ci-dessus pour que le contenu du nouveau fichier préfixé par copy_of_ soit celui de f 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 :

    1. Le premier processus enfant lance cat sur un fichier de votre choix.
    2. 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.
    3. Le parent imprime finalement les identifiants des processus des deux enfants et quitte.
  • 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 :

    1. Les clients communiquent un nom de fichier au serveur.
    2. 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.


Site built with MkDocs and a slightly-modified version of Terminal for MkDocs.
Last update: September 2023