17370845950

为什么在 Windows 下用 Ctrl+Z 退出 Python 而 Linux 下用 Ctrl+D 呢?

让我们来看看如何在不改变文章大意的情况下进行伪原创处理:

为什么在 Windows 下用 Ctrl+Z 退出 Python 而 Linux 下用 Ctrl+D?

启动我们的命令行工具,输入 python 指令后,我们便进入了 python 的交互模式。

unsplash.com/@jay_zhang

在 Linux 上进入 python 交互模式

当我们希望退出 python 环境,返回到 shell 时,该如何操作呢?

使用 quit() 和 exit() 退出

如图所示,两个常用的方法是输入 exit()quit() 来结束这个 python 进程。

此外,还有一个更常见的退出方式:使用快捷键。但有趣的是,这个操作在 WindowsLinux 两个系统上有所不同——前者使用 Ctrl + z 而后者使用 Ctrl + d。那么,为什么会有这样的差异呢?

这里就需要提到文件结束符 EOFend of file)。

在 C 语言的 stdio.h 头文件中,EOF 实际上定义为 -1

#define EOF (-1)

C 语言的创造者肯·汤普森和丹尼斯·里奇也是 Unix 操作系统的开发者,而 Unix 系统对现代操作系统的发展产生了深远影响,包括 WindowsLinux

当一个程序接收到 -1 这个值时,它会认为这是 EOF 信号,表示已到达文件的末尾(end of file),因此可以结束接收输入的任务。

让我们看一个简单的 C 语言示例:

按字符读取

输入输出,测试平台 AcWing

需要注意的是,-1 并不是一个可以直接从键盘输入的数值。要模拟输入 -1,我们需要:

Windows 上按 Ctrl + zLinux 上按 Ctrl + d

因此,你现在应该明白为什么在 Windows 下用 Ctrl+Z 退出 Python,而在 Linux 下用 Ctrl+D 了。

补充说明:有朋友问,为什么 Ctrl + c 不能用于退出 Python 呢?

我的解释是,在 python 的交互窗口中,Ctrl + c 主要用于终止 python 的子进程,比如当你陷入死循环时。

在 python 中使用 ctrl+c 中断进程

如果你真的想通过终止进程的方式来退出 python,我可以提供一套 powershellshell 命令:

tasklist | where {$_ -match "python"}
kill 

powershell

ps aux | grep python
kill -9 

shell