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éeNUM_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 afficheChild X done
(oùX
est le PID correspondant) avant de se terminer. Lorsque tous les enfants sont terminés, le parent doit afficherParent 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 fichierdev/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 programmeshuf
de GNU Utils (installezgshuf
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.