web-dev-qa-db-ja.com

stop python macのターミナルで

Macのターミナルでpythonを使用して、次を入力します。

ctrl-z

pythonを停止しますが、終了はせず、次のような出力を提供します。

>>> 
[34]+  Stopped                 python

ご覧のとおり、34 python呼び出しを停止しました。

使用できましたが

>>> exit()

pythonを終了するための質問は次のとおりです。

  1. (単に停止するのではなく)実際に終了するショートキーはありますか?pythonターミナルで?

    ctrl-c

    動作しません?

  2. 停止したすべてのpythonを強制終了するにはどうすればよいですか?

ところで、どのようにキーボードの外観で「ctrl-c」と他のホットキーを入力できますか?

ありがとう!

17
lukmac

CTRL+d -> EOF(ファイルの終わり)を定義します。

CTRL+c ->ほとんどのジョブを終了します。

ただし、他のpythonプログラムを順番に呼び出すラッパープログラムをpythonラッパープログラムで記述した場合、Ctrl-cは現在実行中のジョブのみを停止します。ラッパープログラムは実行を続けます。最悪の場合、これを行うことができます。

開く:アプリケーション->ユーティリティ->アクティビティモニター、pythonというラベルのプロセスを見つけ、アクティビティモニターでそれを強調表示し、[プロセスの終了]をクリックします。

これらの3つの提案は、プログラムを停止するほとんどの状況で機能するはずです。

25
user2522001

これはPython自体の問題ではありません。これはUnixシェルの動作であり、Windowsや他のシステムとは異なります。 Wikipedia article on CTRL-Z を参照してください。 =より完全な説明について:

Unixライクなシステムでは、Control + Zは、プロセスを中断するキーシーケンス(SIGTSTP)の最も一般的なデフォルトのキーボードマッピングです。ユーザーがコンピューター端末で入力すると、現在実行中のフォアグラウンドプロセスにSIGTSTPシグナルが送信されます。これにより、通常、プロセスは実行を一時停止します。ユーザーは、コマンド 'fg'(フォアグラウンドの略)を入力するか、 'bg'(バックグラウンドの略)を入力し、さらにコマンド 'disown'を入力してバックグラウンドプロセスを端末から分離することにより、プロセスの実行を後で続行できます。

OS Xでは、他のさまざまなUnixベースのシステムと同様に、sttyコマンドを使用して、もしあれば、どのキーがSIGTSTP(またはeof)を生成するかを変更できます。その問題):

$ 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