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?
command-line
chaitanya lakkundi
la source
la source
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écutantfg
(ou%x
où sex
trouve le numéro du travail, comme indiqué dansjobs
).Nous pouvons tester cela en exécutant
nano TEST
, puis en appuyant sur Control+ Zpuis en cours d'exécutionps aux | grep TEST
. Cela nous montrera que lenano
processus est toujours en cours: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.
la source
bg
(au lieu defg
) 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' autrectrl 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
http://en.wikipedia.org/wiki/Control-C
la source
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) etbg
(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:Comment tuer un processus suspendu en arrière-plan?
En utilisant la
kill
commande:kill %n
oùn
est le nombre affiché par lajobs
commande. Donc , si je veux tuer le chat:kill %1
.la source
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.la source
Cela devrait aider
la source
SIGTSTP
, qui peut être attrapé par le programme. Il y a quatre signaux différents, qui peuvent suspendre un programmeSIGSTOP
,SIGTSTP
,SIGTTIN
,SIGTTOU
. De ceux-là seulement neSIGSTOP
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.la source