Quelqu'un peut-il me dire la différence entre ctrl+ zet ctrl+ c?
Lorsque je suis dans le terminal, les deux combinaisons arrêtent le processus en cours, mais quelle est exactement la différence entre les deux?
Quelqu'un peut-il me dire la différence entre ctrl+ zet ctrl+ c?
Lorsque je suis dans le terminal, les deux combinaisons arrêtent le processus en cours, mais quelle est exactement la différence entre les deux?
Réponses:
Si nous laissons les cas marginaux de côté, la différence est simple. Control+ Cabandonne l'application presque immédiatement alors que Control+ la Zplace en arrière-plan, suspendue.
Le shell envoie des signaux différents aux applications sous-jacentes sur ces combinaisons:
Control+ C(caractère de contrôle intr
) envoie SIGINT qui interrompra l'application. Généralement, il provoque l’abandon, mais c’est à l’application de décider.
Control+ Z(caractère de contrôle susp
) envoie SIGTSTP à une application de premier plan, le mettant effectivement en arrière-plan, suspendu. Ceci est utile si vous avez besoin de sortir d'un éditeur de texte pour récupérer des données dont vous avez besoin. Vous pouvez revenir à l'application en exécutant fg
(ou %x
où se x
trouve le numéro du travail, comme indiqué dans jobs
).
Nous pouvons tester cela en exécutant nano TEST
, puis en appuyant sur Control+ Zpuis en cours d'exécution ps aux | grep TEST
. Cela nous montrera que le nano
processus est toujours en cours:
oli 3278 0.0 0.0 14492 3160 pts/4 T 13:59 0:00 nano TEST
De plus, nous pouvons voir (à partir de ce T, qui se trouve dans la colonne d'état) que le processus a été arrêté . Donc, il est toujours en vie, mais il ne fonctionne pas ... Il peut être repris.
Certaines applications se bloqueront si elles ont des processus externes en cours (comme une demande Web) pouvant expirer pendant leur sommeil.
bg
(au lieu de fg
) de suspendre une application qui a été Ctrl + Z ' sans la remettre au premier plan; vous permettant de contrôler efficacement à la fois le shell qui a lancé l'application et l'application elle-même, comme si vous l'aviez utilisée &
lors du démarrage de l'application. Cela est souvent utile lorsque vous avez oublié de commencer avec &
:)
fg
nouveau!
ctrl c
ou l' autre ctrl z
? La valeur par défaut est-elle le SID (bash)?
Control+ Zsuspend un processus ( SIGTSTP
) et Control+ Cinterrompt un processus ( SIGINT
)
http://en.wikipedia.org/wiki/Control-Z
Sur les systèmes de type Unix, Control + Z est le mappage de clavier par défaut le plus courant pour la séquence de touches qui suspend un processus.
http://en.wikipedia.org/wiki/Control-C
Dans les systèmes POSIX, la séquence entraîne la réception d'un signal SIGINT par le programme actif. Si le programme ne spécifie pas comment gérer cette condition, elle est terminée. En règle générale, un programme qui gère un SIGINT se termine toujours ou met au moins fin à la tâche en cours d'exécution à l'intérieur de celui-ci.
Ctrl+ Cest utilisé pour tuer un processus avec signal SIGINT
, autrement dit, il s'agit d'un kill poli .
Ctrl+ Z est utilisé pour suspendre un processus en lui envoyant le signal SIGTSTP
, qui est comme un signal de sommeil, qui peut être annulé et le processus peut être repris à nouveau.
Cependant, lorsqu'un processus est suspendu, nous pouvons le reprendre par fg
(reprendre au premier plan) et bg
(reprendre en arrière-plan), mais je ne peux pas reprendre un processus arrêté, c'est une différence entre utiliser Ctrl+ C& Ctrl+ Z.
Comment pouvons-nous voir les processus suspendus?
La jobs
commande donne une sortie comme ceci:
[1]- Stopped cat
[2]+ Stopped vi
Comment tuer un processus suspendu en arrière-plan?
En utilisant la kill
commande:
kill %n
où n
est le nombre affiché par la jobs
commande. Donc , si je veux tuer le chat: kill %1
.
Pour le dire simplement:
CTRL-C demande que le programme soit annulé .
CTRL-Z oblige le programme à suspendre et à passer en arrière-plan .
Cela vous permet de le reprendre plus tard avec la commande fg
. Les tâches d'arrière-plan restantes sont supprimées lorsque vous quittez le shell de connexion.
Cela devrait aider
Ctrl+ Zest utilisé pour suspendre un processus en lui envoyant le signal SIGSTOP, qui ne peut pas être intercepté par le programme. While Ctrl+ Cest utilisé pour tuer un processus avec le signal SIGINT et peut être intercepté par un programme afin qu'il puisse se nettoyer avant de quitter ou ne pas sortir du tout.
SIGTSTP
, qui peut être attrapé par le programme. Il y a quatre signaux différents, qui peuvent suspendre un programme SIGSTOP
, SIGTSTP
, SIGTTIN
, SIGTTOU
. De ceux-là seulement ne SIGSTOP
peuvent pas être bloqués. Les trois autres sont utilisés par le terminal pour arrêter le processus dans différentes conditions.
lorsque vous appuyez sur ctrl+ c, cela signifie que vous envoyez SIGINT à votre processus. comme vous tapez cette commande: kill -SIGINT <your_pid>
. Cela vous tuera votre processus. C'est pourquoi vous ne pouvez pas le voir lorsque vous lancez la commande ps .
Lorsque vous appuyez sur ctrl+ z, cela signifie que vous envoyez SIGSTOP à votre processus. comme vous tapez cette commande: kill -SIGKSTOP <your_pid>
. Cela arrêtera votre processus, mais le processus sera toujours actif. Vous pouvez donc réactiver votre processus en envoyant SIGCONT à votre processus.