J'utilise un terminal Mac OS X. Et j'utilise Ctrl+Z ou Ctrl+C arrêter certains programmes. Mais j'ai réalisé que je ne sais pas ce qu'ils font exactement. Quels sont-ils et quelle est la différence entre eux?
Cette question était un Question de la semaine du super utilisateur.
Lisez le 13 mars 2011 entrée de blog pour plus de détails ou soumettez les vôtres Question de la semaine.
Control+Z est utilisé pour suspendre un processus en lui envoyant le signal SIGSTOP
name__, qui ne peut pas être intercepté par le programme. Tandis que Control+C est utilisé pour tuer un processus avec le signal SIGINT
name__, et peut être intercepté par un programme afin qu'il puisse se nettoyer avant de quitter, ou ne pas sortir du tout.
Si vous suspendez un processus, celui-ci apparaîtra dans le shell pour vous indiquer qu'il a été suspendu:
[1]+ Stopped yes
Cependant, si vous en tuez un, vous ne verrez aucune confirmation autre que celle d'être renvoyée à une invite du shell. Lorsque vous suspendez un processus, vous pouvez également en faire des choses fantaisistes. Par exemple, en exécutant ceci:
fg
Avec un programme suspendu, cela le ramènera au premier plan.
Et exécuter la commande
bg
Si un programme est suspendu, il pourra s’exécuter en arrière-plan (la sortie du programme ira quand même vers le téléscripteur).
Si vous voulez tuer un programme suspendu, vous n'avez pas à le ramener d'abord avec fg
name__, vous pouvez simplement exécuter la commande suivante:
kill %1
Si vous avez plusieurs commandes suspendues, exécutez
jobs
les listera, comme ceci:
[1]- Stopped pianobar
[2]+ Stopped yes
Utiliser %#
, où #
est le numéro du travail (celui entre crochets de la sortie jobs
name__) avec bg
name__, fg
ou kill
name__, peut être utilisé pour effectuer l'action sur ce travail.
Ctrl + Z suspend le processus avec SIGTSTP, vous pourrez le reprendre plus tard. Ctrl + C supprime le processus avec SIGINT, qui le termine sauf s'il est géré/ignoré par la cible, vous ne pouvez donc pas le reprendre. Il existe également un SIGSTOP qui peut être envoyé par kill()
et que le processus ne peut pas intercepter. SIGCONT est la contrepartie de SIGSTOP et de SIGTSTP qui annule le processus.
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, vous pouvez reprendre le travail en entrant simplement la commande suivante:
fg %1
si vous avez plusieurs processus en pause, alors vous devriez faire
jobs
pour voir le résultat et sélectionnez le numéro approprié à reprendre, par ex.
fg %3
reprend le troisième travail de la liste. Vous pouvez également exécuter des tâches en arrière-plan avec
bg %n
où n est le numéro de travail.
Cntrl + Z pause the currently running process.
Et
Cntrl + C simply terminates the running process.
Avec Ctrl + C, vous ne pouvez pas reprendre le processus. où en utilisant Ctrl + Z vous pouvez reprendre le processus.
utilisez fg% 1 pour reprendre le processus.
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 plusieurs processus en pause, alors vous devriez faire
emplois
pour voir la sortie.
Les réponses précédentes sont correctes, mais pour une raison inconnue, Ctrl-Z suspend également tous les processus enfants, mais killall -SIGSTOP ... ne suspend que le processus le plus en avant (parent) et laisse les enfants s'exécuter à leur guise.