web-dev-qa-db-fra.com

arrêter python en terminal sur mac

En utilisant python dans un terminal sur un Mac, tapez

ctrl-z

va arrêter le python, mais pas le quitter, donnant une sortie comme celle-ci:

>>> 
[34]+  Stopped                 python

Comme vous pouvez le constater, j'ai arrêté 34 appels Python. 

Bien que je puisse utiliser 

>>> exit()

pour quitter python, les questions sont les suivantes:

  1. Existe-t-il une touche de raccourci pour quitter (pas simplement arrêter) python dans le terminal? et pourquoi 

    ctrl-c 

    ne marche pas?

  2. Comment puis-je tuer tout le python arrêté?

BTW, comment pourrais-je taper 'ctrl-c' et d'autres touches de raccourci avec un look de clavier?

Merci!

16
lukmac

CTRL+d -> Définit EOF (Fin de fichier).

CTRL+c -> mettra fin à la plupart des travaux.

Si, toutefois, vous avez écrit un programme wrapper python qui appelle tour à tour d'autres programmes python, Ctrl-c arrêtera uniquement le travail en cours d'exécution. Le programme d'emballage continuera à fonctionner. Dans le pire des cas, vous pouvez le faire:

Ouvrez: Applications -> Utilitaires -> Moniteur d'activité, trouvez le processus étiqueté python, mettez-le en surbrillance dans le moniteur d'activité, puis cliquez sur "Quitter le processus".

Ces trois suggestions devraient fonctionner dans la plupart des situations où vous souhaitez que le programme s’arrête.

22
user2522001

Ce n'est pas un problème de Python, en soi. Ceci est un comportement de shell Unix et constitue une différence par rapport à Windows et aux autres systèmes. Voir le article Wikipedia sur CTRL-Z pour une explication plus complète:

Sur les systèmes de type Unix, Control + Z est le clavier par défaut le plus courant mappage de la séquence de touches qui suspend un processus (SIGTSTP) . Lorsqu’il est entré par un utilisateur sur son terminal informatique, le fichier actuellement processus en avant-plan en cours d’envoi reçoit un signal SIGTSTP qui, en général provoque le processus pour suspendre son exécution. L'utilisateur peut plus tard Continuez le processus en tapant la commande 'fg' (abréviation de foreground) ou en tapant 'bg' (abréviation pour arrière-plan) et, de plus, en tapant la commande 'désaveu' pour séparer le processus d'arrière-plan de le terminal.

Sous OS X comme sur divers autres systèmes Unix, vous pouvez utiliser la commande stty pour changer la clé, le cas échéant, qui produit une SIGTSTP (ou une eof, en l'occurrence):

$ stty -a
speed 38400 baud; 30 rows; 90 columns;
lflags: icanon isig iexten echo echoe echok echoke -echonl echoctl
    -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
    -extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel iutf8
    -ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
    -dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
    eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
    min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
    stop = ^S; susp = ^Z; time = 0; werase = ^W;
$ stty susp ^Y
$ cat
^Y
[1]+  Stopped                 cat
1
Ned Deily