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

打开我们的命令行,输入 python ,我们会进入 python 的交互模式。

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

如上,两个行之有效的方法是输入 exit() 或者 quit() 来中止这个 python 进程。
此外,还有一种更为人所熟知的方式: 使用快捷键退出 。而这个操作在 Windows 和 Linux 两个平台是不同的——前者使用 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 退出 Python 而 Linux 下用 Ctrl+D 了吧!
一些补充
有朋友问了,Ctrl + c 也是杀死进程,为啥 Ctrl + c 不行呢?
我的理解是,在 python 的交互窗口里, Ctrl + c 用于杀死 python 的子进程,比如你进入死循环了。

如果你真的想通过杀死进程的方式来退出 python ,那我这里有一套 powershell 和 shell 的命令。
tasklist | where {$_ -match "python"}
kill <python进程PID>

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


为什么在 Windows 下用 Ctrl+Z 退出 Python 而 Linux 下用 Ctrl+D 呢?的更多相关文章
- windows下数据库文件使用脚本同步到linux下的mysql数据库中
1.背景 windows server 2008 下 每天会有 *.sql数据文件 需要上传到linux 中的mysql数据库中 而运维人员是在 windows server 下使用 xshell 连 ...
- python在linux下的使用
1.查看python(解释器)的版本(什么版本的解释器支持哪一版版的语言标准) 一般在linux上已经预装了python,只要在Bash Shell中输入python,即可看到如下版本信息: 按Ctr ...
- Python之Linux下的virtualenv&&virtualenvwrapper
virtualenv 可以在系统中建立多个不同并且相互不干扰的虚拟环境. #指定清华源下载pip的包 pip3 install -i https://pypi.tuna.tsinghua.edu.cn ...
- Python之Linux下的virtualenv
在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题: 亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难. 此时,我们需要对于不同的工程使用 ...
- 用Python在Linux下调用新中新DKQ-A16D读卡器,读二代证数据
1.背景 最近在研究二代证读卡器,手头上的设备是新中新DKQ-A16D,在官网(https://www.onecardok.com.cn/download)逛了一圈,发现Win下的示例,浏览器插件很多 ...
- Python在Linux下编译安装
[准备环境] Linux centos [前言] 1 linux下默认带Python,带的是2.7版本的 ,如果需要升级版本,需要把系统的自带的Python改名或者卸载,再次安装你所需要的Python ...
- Windows下Lua+Redis 断点调试环境搭建==Linux下类似
Lua+Redis 断点调试环境搭建 windows环境,使用Redis,写lua脚本头疼的问题之一不能对脚本断点调试,google加上自己的摸索,终于搞定. 1.下载ZeroBraneStudio, ...
- 怎样实如今Windows下编写的代码,直接在Linux下编译
方法一: 怎样实如今Windows7下编写Linux程序.写完程序以后.不用复制文件,直接在Linux(RHEL6.5)机器上编译最新的代码. 1.首先将Windows的代码目录设置为共享目录: 2. ...
- Windows下记事本编辑的Shell脚本放到Linux下执行出错,格式问题(/bin/bash^M: bad interpreter: 没有那个文件或目录)
错误: /bin/bash^M: bad interpreter: 没有那个文件或目录 解决方案: 运行脚本时出现了这样一个错误,打开之后并没有找到所谓的^M,查了之后才知道原来是文件格式的问题,也就 ...
- 首次使用windows管理界面访问安装在UNIX或linux下的DP服务器时提示无权限访问的解决方法
用windwos GUI管理界面连接时提示无权限访问: 在/etc/opt/omni/server/users/userlist 添加一行: "" "*" &q ...
随机推荐
- linux下时间时区详解
首先我们要明白,"时间"和"时区"是两个东西. 时间是指从某个时间点开始到另一个时间点经过的"长度",是"纵向"距离,一 ...
- Linux Shell_read
介绍 从控制台输入 基本语法 read [选项] 参数 常用选项 |选项|功能| |-|-| |-p|指定读取值时的提示符| |-t|指定取值时等待的时间(秒),如果没有在指定时间输入,就不再等待了| ...
- 2.搭建K8S集群前置知识
搭建K8S集群 搭建k8s环境平台规划 单master集群 单个master节点,然后管理多个node节点 多master集群 多个master节点,管理多个node节点,同时中间多了一个负载均衡的过 ...
- java api 接口 postman @RequestBody
首先解释一下注解 @RequestBody @RequestBody标记的参数接受的是一个json格式的字符串,一定是一个字符串. 举个例子 这里参数 entryingEntity 如果调用api 如 ...
- Pgloader极简教程
目录 简介 安装 安装概述 CentOS编译安装 使用 命令行 配置文件迁移 可能遇到的错误 更多配置参考 总结 引用 简介 pgloader是一个数据同步工具,用来将数据从其它地方迁移到postgr ...
- RedisTemplate RedisConfig 序列化方式 fastjson2
目录 Fastjson2 序列化 Redis.config RedisUtil.java fastjson和fastjson2的区别 Spring Data Redis 为我们提供了下面的Serial ...
- memcached 和 Grails,第 1 部分:安装和使用 memcached
学习 memcached 命令并评估缓存性能 本文是系列文章的第 1 部分,主要介绍 memcached 和 Grails.作者 James Goodwill 将向您介绍开源解决方案 memcache ...
- 从InputStream到ByteArrayInputStream
本篇主要分析:1.如何将byte数组适配至ByteArrayInputStream,对应与IO部分的适配器模式:2.BufferedInputStream的工作原理,对应于IO的装饰器模式,会首先研究 ...
- 解析Mina代码三部曲
首先,Mina是什么?能帮我们做什么?我研究一个新技术的时候,首先问的就是这样的问题.我个人的理解就是Mina是一个关注于通讯层的框架,任何需要底层通讯的应用,都可以使用它. AD:2013大数据全球 ...
- 代码质量审查工具之SonarQube8.9(LTS)与gitlab CI集成使用
官网地址: https://docs.sonarqube.org/8.9/analysis/scan/sonarscanner/ 目标:在push时自动触发GitLab CI/CD pipeline ...