Exercice : Manipulation et création de processus
Question
Q1/ Manipulation de processus
• Visualiser la liste de tous les processus (programmes en cours d'exécution) avec le plus de caractéristiques possibles.
• Visualiser la liste de tous les processus qui vous appartiennent.
• Faire de même pour tous les processus de root.
• Chargez l'exécutable nommé boucle.zip depuis et mettez dans le répertoire $HOME et décompressez-le dans ce même répertoire.
• Rendez-le exécutable.
• Le lancer et visualiser à nouveau la liste des processus, quelle est la part d'occupation du processeur par ce processus ?
• Détruire ce processus (et s'assurer qu'il est bien mort).
• Essayer de tuer le processus initial de PID 1.
Indice
Pour décompresser un fichier, utilisez la commande unzip nom_du_fichier
Question
Q2/ Création de processus
• Téléchargez le programme fork.py et enregistrez-le dans le répertoire $HOME.
• Rendez-le exécutable.
• Exécutez-le avec éventuellement un paramètre numérique N. Ce programme crée N processus fils à partir du processus père. Il affiche des messages « pong » (père) et « ping N » (fils de numéro N) avec une attente aléatoire entre chaque affichage : on voit bien l'exécution en parallèle de tous les processus.
• Mettez fin à ces processus en tapant control-c.
• Si vous visualisez le contenu du fichier fork.py, vous vous rendrez compte qu'il s'appuie sur le processus père initial s'appuie sur la fonction fork() qui crée un clone du processus l'appelant. Cette fonction existe aussi en C, visualisez sa documentation.
• Relancez fork.py et ouvrez un autre terminal.
• Depuis ce terminal, trouvez le PID du processus père et des processus fils.
• Tuez un à un les processus fils et observez le résultat dans le terminal initial.
• Tuez le processus père.
• La fonction Python waitpid(PID, 0) permet d'attendre la fin du processus dont le PID est donné. Modifiez le code des processus fils pour qu'ils ne fassent que 10 affichages de « ping » et le code du processus père pour qu'il attende la fin de ses fils et affiche « pong » seulement après avoir attendu la fin de ses fils.