在Mac上的终端停止python

时间:2013-08-04 21:17:49

标签: python macos terminal

在Mac上的终端中使用python,输入

ctrl-z

将停止python,但不退出它,给出如下输出:

>>> 
[34]+  Stopped                 python

正如你所看到的,我已经停止了34次python调用。

虽然我可以使用

>>> exit()

退出python,问题是:

  1. 在终端中是否有一个真正退出(而不仅仅是停止)python的短信?而且,为什么

    ctrl-c

    不起作用?

  2. 如何杀死所有停止的python?

  3. 顺便说一句,我怎么能用键盘看键入'ctrl-c'和其他热键呢?

    谢谢!

2 个答案:

答案 0 :(得分:23)

CTRL + d - >定义EOF(文件结束)。

CTRL + c - >将终止大多数工作。

但是,如果你编写了一个python包装器程序来依次调用其他python程序,Ctrl-c只会停止当前正在运行的作业。包装器程序将继续运行。最糟糕的情况是,你可以这样做:

打开:应用程序 - >实用程序 - >活动监视器,找到标记为python的进程,在活动监视器中突出显示它,然后单击“退出进程”。

这三个建议适用于您希望程序停止的大多数情况。

答案 1 :(得分:1)

这本身并不是一个Python问题。这是一个Unix shell行为,与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