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