2012-09-13 12:51:29 +0000 2012-09-13 12:51:29 +0000
88
88

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

J'étais curieux et confus de savoir quel est exactement le comportement de CTRl+Z.

Je sais, si un processus se déroule au premier plan, et que nous appuyons 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-ce qu'il est suspendu et arrêté à l'endroit où il était.

Et si elle s'arrête à ce point, et quelle est la signification du travail en arrière-plan.

Réponses (4)

74
74
74
2012-09-13 12:57:13 +0000

Un “travail de fond” est un travail qui n'interagit pas avec l'utilisateur : il ne contrôle pas le tty et fait juste son travail (généralement en silence). Un travail de premier plan est l'inverse, il contrôle le tty pour interagir avec l'utilisateur.

Control-Z suspend le processus le plus récent du premier plan (le dernier processus à interagir avec le tty) (à moins que ce processus ne prenne des mesures pour ignorer la suspension, comme le font normalement les coquillages). Cela vous ramènera généralement à votre shell, à partir duquel vous pouvez généralement entrer la commande bg pour déplacer le processus juste suspendu en arrière-plan (le laissant continuer à s'exécuter) ou fg pour le ramener au premier plan.

58
58
58
2012-09-13 12:57:09 +0000

En appuyant sur Ctrl+Z, vous envoyez le signal TSTP à votre processus. Cela arrête l'exécution (le noyau ne programmera plus de temps CPU au processus) et le processus attend un CONT pour continuer le traitement.

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

Le shell a la fonctionnalité de “fond” du 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.

15
15
15
2012-09-13 13:02:52 +0000

Considérez cette commande, qui prend environ 4,5 secondes sur mon ordinateur portable :

echo 2^10000000 | bc -lq | wc -c

Lorsque vous appuyez sur Ctrl+Z, le calcul est suspendu. Vous avez la possibilité de reprendre le calcul au premier plan en utilisant fg, ou de le reprendre en arrière-plan en utilisant bg. Cette dernière option est plus ou moins équivalente à l'exécution :

echo 2^10000000 | bc -lq | wc -c &
9
9
9
2012-09-13 12:57:30 +0000

Un processus est suspendu et arrêté en appuyant 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.