Gestion des processus

Exercice 1

Écrire un programme qui affiche son propre PID.

Exercice 2

Écrire un programme qui crée un fils, effectue une petite boucle d’attente active, puis attend la terminaison de son fils.

Exercice 3

Reprenez le programme précédent et affichez dans le père le PID du fils terminé, ainsi que son code de retour. Le processus fils affichera son PID, celui de son père puis attendra un petit peu avant d’appeler exit. Vous donnerez une valeur de retour bien identifiable pour le fils (différente de -1, 0 ou 1).

Exercice 4

Écrire un programme pere-et-fils qui lance un processus un fils, père et fils déclineront ensuite leur identité.

je m’appelle 5585 et je suis le père de 5586
je m’appelle 5586 et je suis le fils de 5585

Comment faire en sorte que le processus père affiche son message toujours après son fils ? Toujours avant ?

Exercice 5

Écrire un programme qui crée un processus fils et qui se termine immédiatement. Le processus fils devra s’endormir pendant quelques secondes puis afficher le PID de son père. relancez le programme plusieurs fois. Qu’observez-vous?

Exercice 6

Écrire un programme qui crée N processus fils (N étant passé en paramètre sur la ligne de commande) et qui attend la fin de tous les fils avant de se terminer à son tour. Les N processus fils se contenteront simplement d’afficher leur numéro de rang (de 0 à N - 1) sur la sortie standard.

Exercice 7

Créez un premier programme très simple (qui fait juste un printf par exemple) puis créez un second programme qui va effectuer un recouvrement en appelant ce premier programme.

Exercice 8

Reprenez l’exercice précédent, mais ce recouvrement devra être effectué par un processus fils créé dans le second programme.

Exercice 9

Écrivez un programme qui ouvre un fichier quelconque et qui affiche la valeur de l’index de descripteur associé. Exécutez ce programme directement en le lançant depuis un terminal puis de nouveau en créant un processus fils qui fait un exec de ce même programme. Que constatez-vous?

Exercice 10

Écrire une fonction System(char *commande) qui lance un processus exécutant un shell pour interpréter la commande passée en paramètre puis attends la fin de cette interprétation pour retourner. Voir la fonction system.