Previous Up Next

2  Gestion de processus

Commandes de gestion des processus

Les deux commandes ps et kill sont utilisées pour la gestion des processus.

La commande ps

affiche des informations sur les processus actifs. Sans options, elle affiche les processus du même terminal que le processus ps. La sortie contient uniquement le pid du processus, le nom du terminal, le temps cumulé d’exécution et le nom de la commande.

Les options les plus courantes sont :

-a
liste tous les processus sauf ceux non associés à un terminal ;
-e
liste tous les processus du système ;
-f
donne plus d’information pour chaque processus ;
-u uidlist
liste les processus des utilisateurs donnés dans uidlist.
La commande top

affiche les mêmes informations que ps en rafraîchissant périodiquement l’affichage.

La commande kill

permet d’envoyer un signal à un processus. Deux syntaxes sont disponibles :

kill -s nomdesignal pid...
envoie le signal dont le nom est nomdesignal aux processus dont on donne le pid ;
kill -numerodesignal pid...
envoie le signal de numéro numerodesignal aux processus dont on donne le pid.

Un signal peut donc être nommé symboliquement (kill -l donne la liste des noms) ou par son numéro. Nous utiliserons ici le signal KILL de numéro 9 qui permet de tuer un processus.


Exercice 6
 (À vos marques, prêts...)   Afin de mettre en évidence le partage du temps processeur entre les processus prêts, construisez un programme figurant une course entre processus ; ce programme doit

Fonction system()

La fonction de la bibliothèque standard

#include <stdlib.h>

int system (const char *command);

exécute la commande command et retourne après sa terminaison. La valeur de retour de la commande sous la forme habituellement retournée par wait() est retournée, la valeur -1 en cas d’erreur.


Exercice 7
 (Observation de processus)   Il s’agit d’écrire un programme à plusieurs processus qui effectue la tâche suivante. Le processus père crée N processus fils. Chaque processus fils réalise dans une boucle infinie les instructions suivantes :

Le processus père, après avoir créé tous ses fils, affiche les processus actifs du terminal et ce à l’aide de la commande ps (voir l’encart). Pour cela, il fera appel à la fonction system() qui permet d’invoquer une commande Shell (voir l’encart). Puis, jusqu’à ce qu’il n’ait plus de fils, il exécutera le code suivant :

Question 1 (Préparez)   Donnez, sous forme de pseudo-code, la structure de ce programme.

Explicitez, a priori, son comportement.

Question 2 (Exécutez)   Utilisez la commande kill pour terminer les processus fils.

Que se passe-t-il si vous tuez le processus père ?

Question 3 (Observez)   Modifiez le programme de telle façon que le processus père attende, par exemple sur une saisie clavier, avant de commencer à attendre la terminaison de ses processus fils à l’aide de wait().

Previous Up Next