next up previous contents index
Next: Programmation du shell Up: Approfondissement Previous: Redirections et filtres

Processus

Si on lance une commande qui prend beaucoup de temps, on peut l'interrompre par Control-C. Ceci interrompt (définitivement) la commande. On peut aussi exécuter une commande en tâche de fond. Le shell rend alors la main avant la fin de la commande. Pour le faire, on ajoute un & à la fin de la commande:

poly=> cc -o grosprogramme grosfichier.c &

  Cette commande lance le compilateur cc en parallèle avec le shell. On reprend la main immédiatement, sans attendre la fin de l'exécution de la commande. On peut donc taper d'autres commandes pendant que la précédente d'exécute. La commande ps ou ps -x montre où en sont les tâches de fond:

poly=> ps
  PID TT STAT  TIME COMMAND
 4450 p9 S     0:00 /usr/local/bin/tcsh
 4782 p9 S     0:02 cc -o grosprogramme grosfichier.c
 4841 p9 R     0:00 ps

Unix est un système multi-tâches, c'est-à-dire qu'il peut exécuter plusieurs programmes à la fois. Un processus est un programme en train de s'exécuter. La commande ps affiche la liste des processus que vous avez lancés. Chaque processus a un numéro. C'est la colonne PID ci-dessus. Le shell crée un nouveau processus pour exécuter chaque commande. Pour une commande ``normale'' (sans &), il attend que le processus termine, indiquant que la commande a fini de s'exécuter. Pour une commande en tâche de fond (avec &), le shell n'attend pas. On peut interrompre (``tuer'') un processus avant la fin, avec la commande kill -9 (plus le numéro du processus).

poly=> kill -9 4782
poly=> ps
  PID TT STAT  TIME COMMAND
 4450 p9 S     0:00 /usr/local/bin/tcsh
 4851 p9 R     0:00 ps



Wed Jun 25 13:24:35 MET DST 1997