Exercice 0 - Familiarisation avec execl(), execlp(), execv(), execvp()

  • Problème 0 : Utilisez man pour rechercher des informations sur les fonctions suivantes :
    • execl()
    • execlp()
    • execv()
    • execvp()
    • pipe()
    • dup2()

Que prennent-ils comme entrée ? Que renvoient-ils en sortie ? De quelles bibliothèques C font-elles partie et quels en-têtes faut-il inclure pour les utiliser ?

Hint

Voir les pages 2 et 3 du man

Exercice 0 - Utilisation de tube pour synchroniser les processus.

  • Problème 0 : Créez un programme C qui affiche Parent démarré, puis crée NUM_CHILD (constante définie par votre programme) processus enfants dont chacun dort pendant un nombre aléatoire de secondes (disons entre 1 et 3) puis affiche Child X done (où X est le PID correspondant) avant de se terminer. Lorsque tous les enfants sont terminés, le parent doit afficher Parent terminé avant de quitter.
Hint

Essayer de lire à partir d'un tube vide dont l'entrée est encore ouverte est une opération bloquante.

Exercice 1 - Somme d'un tableau

  • Problème 0 : Ecrivez un programme C qui remplit un tableau avec des valeurs entières aléatoires dans l'intervalle (-MAX...MAX) (où MAX est une constante définie par votre programme). Les valeurs aléatoires doivent provenir du fichier dev/urandom.

  • Problème 1 : Etendez le programme ci-dessus de façon à ce qu'il lance deux processus enfants, chacun d'entre eux calculant la somme de la première et de la seconde moitié du tableau créé, respectivement, et communiquant le résultat à son parent, qui imprime ensuite la somme totale sur la sortie standard.

Devoir de déposer avant le lundi 12/02/2024 23:59 (GMT+1)

  • Problème 0 : Créez un programme C qui démarre en lançant un processus enfant qui exécute (en utilisant une des fonctions exec()) le programme shuf de GNU Utils (installez gshuf si vous êtes sur un MAC).

  • Problème 1 : Etendez le programme ci-dessus pour que le parent crée un tableau de taille ARRAY_SIZE, récupère une permutation aléatoire de l'intervalle [0...ARRAY_SIZE) générée par son enfant, et l'utilise pour imprimer une permutation aléatoire du tableau.


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