web-dev-qa-db-fra.com

Quel est l'effet de CTRL + Z sur une application unix\Linux

J'étais curieux et confus quant au comportement exact de CTRl + Z.

Je sais, si un processus s'exécute en avant-plan et que l'on appuie sur ctrl + z, il passe en arrière-plan.

Mais qu'est-ce qui se passe exactement.

Est-ce qu'il continue à faire son travail ou est-il suspendu et arrêté là où il était?.

Et si cela s'arrête à ce moment-là, et quelle est la signification de job d'arrière-plan.

78
Kumar Alok

Un "job d'arrière-plan" est juste un travail qui n'interagit pas avec l'utilisateur - il ne contrôle pas le terminal et il fait juste son travail (généralement de manière silencieuse). Un travail de premier plan est l'inverse, il détient le contrôle du terminal pour interagir avec l'utilisateur.

Control-Z suspend le processus de premier plan le plus récent (le dernier processus à interagir avec le terminal) (à 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 sur votre Shell, à partir duquel vous pourrez généralement entrer la commande bg pour déplacer le processus suspendu en arrière-plan (en le laissant continuer de s'exécuter) ou fg pour le ramener au premier plan.

64
mah

Appuyez sur Ctrl + Z pour envoyer le signal TSTP à votre processus. Cela arrête l'exécution (le noyau ne programme plus de temps processeur) et le processus attend un CONT pour continuer le traitement.

Vous pouvez émuler/reproduire ceci via kill -TSTP et kill -CONT (puisque kill enverra un signal nommé à votre processus, malgré son nom!)

Le shell a les fonctionnalités pour «mettre en arrière» 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 de «fond» ou «premier plan».

Voir ici pour plus d'informations.

52
Brian Agnew

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 à l'aide de fgou de le reprendre en arrière-plan à l'aide de bgname__. Ce dernier est plus ou moins équivalent à exécuter:

echo 2^10000000 | bc -lq | wc -c &
15
Bolo

Un processus est suspendu et arrêté lorsque vous appuyez sur ctrl + z. Avec fg, vous pouvez déplacer le travail suspendu au premier plan. Avec bg, vous pouvez l'exécuter en arrière-plan.

Voir http://linuxreviews.org/beginner/jobs/ pour plus d'informations.

9
akluth