在Mac上的终端中使用python,输入
ctrl-z
将停止python,但不退出它,给出如下输出:
>>>
[34]+ Stopped python
正如你所看到的,我已经停止了34次python调用。
虽然我可以使用
>>> exit()
退出python,问题是:
在终端中是否有一个真正退出(而不仅仅是停止)python的短信?而且,为什么
ctrl-c
不起作用?
如何杀死所有停止的python?
顺便说一句,我怎么能用键盘看键入'ctrl-c'和其他热键呢?
谢谢!
答案 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