乐趣区

关于python:为什么在-Windows-下用-CtrlZ-退出-Python-而-Linux-下用-CtrlD-呢

关上咱们的命令行,输出 python,咱们会进入 python 的交互模式。

当咱们想退出 python,返回咱们的 shell 时,你将如何退出?

如上,两个卓有成效的办法是输出 exit() 或者 quit() 来停止这个 python 过程。

此外,还有一种更为人所熟知的形式: 应用快捷键退出 。而这个操作在 WindowsLinux 两个平台是不同的——前者应用 Ctrl + z 而后者应用 Ctrl + d。然而,为什么不同呢?

EOF, end of file

这就不得不提起文件结束符 EOF (end of file)。

在 C 语言的 stdio.h 中,EOF 实际上就是 -1

#define EOF (-1)

C 语言之父肯·汤普森与丹尼斯·里奇恰好也是 Unix 的缔造者,而 Unix 深远地影响了操作系统的倒退:无论是 Windows 还是 Linux

当咱们接管输出的“程序”接管到 -1 这个值时,程序便会晓得:哦,这不就是 EOF 老兄吗!当初曾经到达文件的最开端(end of file)了,我的接管输出的工作也就实现了,能够上班了!

咱们来看一个简略的 C 语言例子。

但留神,-1 并不是数值对象,而就是 -1 这个输出值,咱们无奈通过键盘上的 -1 间接键入,如果想要键入 -1,那么就须要:

  • Windows 上键入 Ctrl + z
  • Linux 上键入 Ctrl + d

所以,你也就晓得为什么 Windows 下用 Ctrl+Z 退出 PythonLinux 下用 Ctrl+D 了吧!

一些补充

有敌人问了,Ctrl + c 也是杀死过程,为啥 Ctrl + c 不行呢?

我的了解是,在 python 的交互窗口里,Ctrl + c 用于杀死 python 的子过程,比方你进入死循环了。

如果你真的想通过杀死过程的形式来退出 python,那我这里有一套 powershellshell 的命令。

tasklist | where {$_ -match "python"}
kill <python 过程 PID>

ps aux | grep python
kill -9 <python 过程 PID>

退出移动版