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


85

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.


7
Ctrl-Z n'envoie pas de processus en arrière-plan, il le suspend.
Wooble

Réponses:


70

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 ce qu'il veut (généralement en silence). 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 dans votre shell, à partir duquel vous pourrez généralement entrer la commande bgpermettant de déplacer le processus suspendu en arrière-plan (en le laissant continuer de s'exécuter) ou fgde le ramener au premier plan.


1
pour annuler un processus en arrière-plan en fgidentifiant d'abord le travail en le lançant, jobs puis en indiquant si son% 1, puis le fb %1 processus sera repris
Scott Stensland

fg %1pasfb %1
ahonnecke le

55

Appuyez sur Ctrl + Z envoie le TSTPsignal à 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 -TSTPet kill -CONT(car vous killenverrez un signal nommé à votre processus, malgré le nom!)

Le shell a la fonctionnalité pour «mettre en arrière» le processus, mais c'est 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.


2
^Zenvoie SIGTSTP, pas SIGSTOP
William Pursell le

@ WilliamPursell - ah! C'est noté. Maintenant changé. Thx
Brian Agnew le

15

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 est suspendu. Vous avez la possibilité de reprendre le calcul en avant-plan à l'aide de fg, ou de le reprendre en arrière-plan avec bg. Ce dernier est plus ou moins équivalent à exécuter:

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

9

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.