220 votes

Quelle est la différence entre Ctrl+Z et Ctrl+C dans la ligne de commande Unix ?

J'utilise le terminal Mac OS X. Et j'utilise Ctrl + Z ou Ctrl + C pour arrêter certains programmes. Mais je me suis rendu compte que je ne sais pas ce qu'ils font exactement. Qu'est-ce qu'ils sont et quelle est la différence entre eux ?

Cette question était un Question de la semaine pour les super utilisateurs .
Lire l'article du 13 mars 2011 entrée de blog pour plus de détails ou soumettez votre propre La question de la semaine.

289voto

Wuffers Points 18372

Control + Z est utilisé pour suspendre un processus en lui envoyant le signal SIGSTOP qui ne peut pas être intercepté par le programme. Alors que Control + C est utilisé pour tuer un processus avec le signal SIGINT et peut être intercepté par un programme afin qu'il puisse se nettoyer avant de sortir, ou ne pas sortir du tout.

Si vous suspendez un processus, cela apparaîtra dans le Shell pour vous dire qu'il a été suspendu :

[1]+  Stopped                 yes

Cependant, si vous en tuez un, vous ne verrez aucune confirmation autre que le retour à une invite Shell. Lorsque vous suspendez un processus, vous pouvez faire des choses fantaisistes avec lui, aussi. Par exemple, en exécutant ceci :

fg

Un programme suspendu le ramènera au premier plan.

Et en exécutant la commande

bg

La suspension d'un programme lui permettra de s'exécuter en arrière-plan (la sortie du programme sera toujours envoyée au TTY, cependant).

Si vous voulez tuer un programme suspendu, vous n'avez pas besoin de le ramener avec fg d'abord, vous pouvez simplement faire la commande :

kill %1

Si vous avez plusieurs commandes suspendues, l'exécution de

jobs

va les énumérer, comme ceci :

[1]-  Stopped                 pianobar
[2]+  Stopped                 yes

Utilisation de %## est le numéro de l'emploi (celui entre crochets de l'emploi). jobs sortie) avec bg , fg ou kill peut être utilisé pour effectuer l'action sur ce poste.

3 votes

Vous pouvez modifier la fonction de chaque touche à l'aide de l'option stty commande. Par exemple stty susp ^Z o stty intr ^C .

10 votes

En fait, il envoie SIGTSTP, qui peut être intercepté.

2 votes

Cool ! Donc, si un programme refuse de mourir avec Ctrl+C, comment le tuer de force ?

19voto

g24l Points 889

CTRL+Z arrête (met en pause) un travail

CTRL+C termine un travail

avec CTRL+C vous ne pouvez pas reprendre le processus mais avec CTRL+Z le travail peut être repris en entrant simplement dans le promt de commande :

fg %1

si vous avez plusieurs processus en pause, vous devez faire

jobs

pour voir la sortie et sélectionner le numéro approprié pour reprendre, par exemple

fg %3

reprend le troisième poste de la liste. Vous pouvez également faire tourner des tâches en arrière-plan à l'aide de la commande

bg %n

où n est le numéro de la tâche.

0 votes

Il s'agit de travaux (groupes de processus), et non de processus avec lesquels CTRL-C, CTRL-Z, fg et bg sont traités.

4voto

Ravindra Miyani Points 141
Cntrl + Z pause the currently running process. 

Et

Cntrl + C simply terminates the running process.

En utilisant Cntrl + C vous ne pouvez pas reprendre le processus. alors qu'en utilisant Cntrl + Z vous pouvez reprendre le processus.

utiliser fg %1 pour reprendre le processus.

3voto

abul Points 31

CTRL + Z arrête (met en pause) un travail

CTRL + C met fin à un travail

Avec CTRL + C vous ne pouvez pas reprendre le processus, mais avec CTRL + Z le travail peut être repris en entrant simplement à l'invite de commande :

fg %1

Si vous avez de multiples processus en pause, vous devez faire

emplois

pour voir la sortie.

2voto

Kostas Points 121

Les réponses précédentes sont correctes, mais pour une raison inconnue, Ctrl-Z suspend également tous les processus enfants, mais killall -SIGSTOP ... suspend uniquement le processus le plus en avant (parent) et laisse les enfants s'exécuter comme ils le souhaitent.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X