为什么在 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 ...
随机推荐
- docker命令总结(一)
个人简单总结: 参数 用途 语法 示例 search 在docker hub中搜索镜像 docker search 镜像名称 docker search nginx pull 在docker hub中 ...
- CTF-CRYPTO-RSA
CTF-CRYPTO-RSA 只是个人理解,可能有不正确的地方,具体RSA算法参考:http://8.146.200.37:4100/crypto/asymmetric/rsa 1.RSA算法概述 R ...
- 0.4 Nomenclature and notation
- Java后端请求想接收多个对象入参的数据方法
在Java后端开发中,如果我们希望接收多个对象作为HTTP请求的入参,可以使用Spring Boot框架来简化这一过程.Spring Boot提供了强大的RESTful API支持,能够方便地处理各种 ...
- 关于Air780E:与服务器的加密通信操作方法
今天我们来学习合宙低功耗4G模组Air780E快速入门之跟服务器之间的加密通信,伙伴们,一起学起来! 一.编写脚本 1.1 准备资料 Air780E开发板购买 Air780E开发板设计资料 Lua ...
- C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- ARC121D 1 or 2
ARC121D 1 or 2 诈骗题. 思路 吃一个糖的操作可以看做是和一个 \(a_i\) 为 0 的糖一起吃. 可以枚举有多少个糖单独吃来确定要增加多少个 0. 问题变为每次吃两颗糖. 根据人类直 ...
- typescript 安装调试(二)
一.安装ts-node 今天介绍另外一种更加方便的ts调试方式,需要安装以下几个库 第一个库是ts-node,这个库可以直接运行ts文件无需实时编译成js文件后再运行 安装命令 npm i ts-n ...
- SpringBoot实现轻量级动态定时任务管控及组件化
关于动态定时任务 关于在SpringBoot中使用定时任务,大部分都是直接使用SpringBoot的@Scheduled注解,如下: @Component public class TestTask ...
- Lucene 源代码剖析-2 Lucene是什么
转载自 http://download.csdn.net/source/858994 源地址下是 Word 文档,这里转换成HTML 格式 1 Lucene是什么 Apache L ...