Création/recouvrement de processus (1)

Création de processus

Père et fils

Écrire une fonction :

void affiche_car(const char *prefixe)

qui affiche la chaîne pointée par prefixe, suivie du message suivant :

Processus numéro : XXXX. Numéro du processus père : YYYY.

Remarque : afficher l'ensemble du message sur une seule ligne.

Écrire un programme créant un processus fils. Chaque processus (père et fils) doit afficher un message à l'aide de la fonction affiche_car().

Exécuter le programme plusieurs fois. Peut-on prédire le numéro du processus père écrit par le processus père ? Pourquoi ? Comment le vérifier ?

En attendant

Reprendre le programme précédent et mettre une instruction sleep(5), pour mettre en attente le processus fils pendant 5 secondes.  Que se passe-t-il ?

Fils et petit-fils

Écrire un programme C créant deux processus fils, chaque processus fils créera un processus petit-fils.  Chaque processus utilisera la fonction affiche_car() de la première question.  Les processus fils se termineront avec un code de retour de 0, et les petit-fils avec un code de retour de 1.

Tous les processus utiliseront la fonction wait() et la macro WIFEXITED(status) afin de tester le code de retour du processus terminé et afficher le message suivant :

Processus XXXX : mon fils YYYY s'est terminé normalement/anormalement

Avec plus de processus...

  • Écrire un programme qui crée 100 processus fils, chaque fils affiche son PID
  • Écrire un programme qui crée 100 processus : 1 fils, 1 petit-fils, etc.
  • Compléter les programmes pour que le processus initial ne se termine que quand tous ses descendants sont terminés.