25

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

ctrl-z

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

>>> 
[34]+  Stopped                 python

如您所见,我已经停止了 34 个 python 调用。

虽然我可以使用

>>> exit()

要退出 python,问题是:

  1. 终端中是否有真正退出(不仅仅是停止)python的快捷键?而且,为什么

    Ctrl-C

    不工作?

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

顺便说一句,我怎么能用键盘外观输入“ctrl-c”和其他热键?

谢谢!

4

2 回答 2

30

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

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

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

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

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

于 2013-08-04T21:25:23.123 回答
1

这本身不是 Python 问题。这是一个 Unix shell 行为,与 Windows 和其他系统不同。有关更完整的解释,请参阅CTRL-Z 上的 Wikipedia 文章:

在类 Unix 系统上,Control+Z 是用于暂停进程 (SIGTSTP) 的键序列的最常见的默认键盘映射。当用户在他们的计算机终端输入时,当前运行的前台进程会被发送一个 SIGTSTP 信号,这通常会导致进程暂停其执行。用户稍后可以通过键入命令“fg”(前台的缩写)或键入“bg”(后台的缩写)并进一步键入命令“disown”来将后台进程与终端分开来继续执行进程。

在 OS X 上和其他各种基于 Unix 的系统上一样,您可以使用该stty命令来更改哪个键(如果有)产生 a 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
于 2013-08-04T21:51:36.117 回答