Un "travail d'arrière-plan" est juste celui qui n'interagit pas avec l'utilisateur - il ne contrôle pas le tty et il fait juste son travail (généralement en silence). Un travail de premier plan est l'inverse, il détient le contrôle du tty pour interagir avec l'utilisateur.
Control-Z suspend le processus de premier plan le plus récent (le dernier processus à interagir avec le tty) (à moins que ce processus ne prenne des mesures pour ignorer la suspension, comme le font normalement les shells). Cela vous ramènera généralement à votre shell, à partir duquel vous pourrez généralement entrer la commande bg
pour déplacer le processus qui vient d'être suspendu en arrière-plan (le laissant continuer à s'exécuter) ou fg
pour le ramener au premier plan.
Appuyer sur Ctrl+Z envoie le TSTP
signal à votre processus. Cela arrête l'exécution (le noyau ne programmera plus de temps CPU pour le processus) et le processus attend un CONT pour continuer le traitement.
Vous pouvez émuler/répliquer ceci via kill -TSTP
et kill -CONT
(depuis kill
enverra un signal désigné à votre processus, malgré son nom !)
Le shell a la fonctionnalité de "mettre en arrière-plan" le processus, mais il s'agit d'une relation entre le shell et le processus. Le processus lui-même n'a pas vraiment le concept d'"arrière-plan" ou d'"avant-plan".
Voir ici pour plus d'informations.
Considérez cette commande, qui prend env. 4,5 secondes sur mon ordinateur portable :
echo 2^10000000 | bc -lq | wc -c
Lorsque vous appuyez sur Ctrl +Z , le calcul sera suspendu. Vous avez la possibilité de reprendre le calcul au premier plan en utilisant fg
, ou reprenez-le en arrière-plan en utilisant bg
. Ce dernier est plus ou moins équivalent à exécuter :
echo 2^10000000 | bc -lq | wc -c &