打开我们的命令行,输入 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>

为什么在 Windows 下用 Ctrl+Z 退出 Python 而 Linux 下用 Ctrl+D 呢?的更多相关文章

  1. windows下数据库文件使用脚本同步到linux下的mysql数据库中

    1.背景 windows server 2008 下 每天会有 *.sql数据文件 需要上传到linux 中的mysql数据库中 而运维人员是在 windows server 下使用 xshell 连 ...

  2. python在linux下的使用

    1.查看python(解释器)的版本(什么版本的解释器支持哪一版版的语言标准) 一般在linux上已经预装了python,只要在Bash Shell中输入python,即可看到如下版本信息: 按Ctr ...

  3. Python之Linux下的virtualenv&&virtualenvwrapper

    virtualenv 可以在系统中建立多个不同并且相互不干扰的虚拟环境. #指定清华源下载pip的包 pip3 install -i https://pypi.tuna.tsinghua.edu.cn ...

  4. Python之Linux下的virtualenv

    在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题: 亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难. 此时,我们需要对于不同的工程使用 ...

  5. 用Python在Linux下调用新中新DKQ-A16D读卡器,读二代证数据

    1.背景 最近在研究二代证读卡器,手头上的设备是新中新DKQ-A16D,在官网(https://www.onecardok.com.cn/download)逛了一圈,发现Win下的示例,浏览器插件很多 ...

  6. Python在Linux下编译安装

    [准备环境] Linux centos [前言] 1 linux下默认带Python,带的是2.7版本的 ,如果需要升级版本,需要把系统的自带的Python改名或者卸载,再次安装你所需要的Python ...

  7. Windows下Lua+Redis 断点调试环境搭建==Linux下类似

    Lua+Redis 断点调试环境搭建 windows环境,使用Redis,写lua脚本头疼的问题之一不能对脚本断点调试,google加上自己的摸索,终于搞定. 1.下载ZeroBraneStudio, ...

  8. 怎样实如今Windows下编写的代码,直接在Linux下编译

    方法一: 怎样实如今Windows7下编写Linux程序.写完程序以后.不用复制文件,直接在Linux(RHEL6.5)机器上编译最新的代码. 1.首先将Windows的代码目录设置为共享目录: 2. ...

  9. Windows下记事本编辑的Shell脚本放到Linux下执行出错,格式问题(/bin/bash^M: bad interpreter: 没有那个文件或目录)

    错误: /bin/bash^M: bad interpreter: 没有那个文件或目录 解决方案: 运行脚本时出现了这样一个错误,打开之后并没有找到所谓的^M,查了之后才知道原来是文件格式的问题,也就 ...

  10. 首次使用windows管理界面访问安装在UNIX或linux下的DP服务器时提示无权限访问的解决方法

    用windwos GUI管理界面连接时提示无权限访问: 在/etc/opt/omni/server/users/userlist 添加一行: "" "*" &q ...

随机推荐

  1. 一文彻底弄懂MySQL的MVCC多版本控制器

    InnoDB 的 MVCC(Multi-Version Concurrency Control,多版本并发控制) 是 MySQL 实现高并发事务处理的一种机制.通过 MVCC,InnoDB 可以在高并 ...

  2. Nginx 反向代理 (泛域名->泛域名,https,静态文件)

    Nginx 反向代理配置指南 (泛域名 -> 泛域名, HTTPS, 静态文件) 完整版 server { # 监听80端口 listen 80; listen 443 ssl http2;; ...

  3. 基础控件(Button,Edittext,ImageView,ProgressBar,ToolBar,AlertDialog,PopupWindow)

    Button 触发事件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: ...

  4. 从 Git 提交历史生成 Release Note

    发布软件时写 Release Note 算是常规操作,但每次从头手打也有点累,可以考虑从 Git 的提交历史中自动生成. Git 提交信息一般是三段式结构,段落之间使用空行隔开: <subjec ...

  5. ubuntu16.04安装mmdetection库

    一,前言 1.1,更新 pip 和 conda下载源 1.2,查看 conda 和 pip 版本 二,MMDetection 简介 三,MMDetection 安装 3.1,依赖环境 3.2,安装过程 ...

  6. 搞人工智能开源大语言模型GPT2、Llama的正确姿势

    (如果想及时收到人工智能相关的知识更新,请点击关注!!) 序言:目前我们每一小节的内容都讲解得非常慢,因为这是人工智能研发中的最基础知识.如果我们不能扎实掌握这些知识,将很难理解后续更复杂且实用的概念 ...

  7. 3-4 C++迭代器初步

    目录 3.4.0 为什么要有迭代器 3.4.1使用迭代器 迭代器的比较操作 用迭代器写一个遍历 取出迭代器中的元素:解引用 * 迭代器的类型 使用迭代器时的注意点 3.4.2 迭代器的算术操作 常见操 ...

  8. .NET Core 委托底层原理浅谈

    简介 .NET通过委托来提供回调函数机制,与C/C++不同的是,委托确保回调是类型安全,且允许多播委托.并支持调用静态/实例方法. 简单来说,C++的函数指针有如下功能限制,委托作为C#中的上位替代, ...

  9. 使用Aurora在PPT中插入Latex公式

    应用场景: (1) 在PPT中插入Latex公式 (2) 当点击PPT中的公式,出现提示 "无法找到 服务器应用程序.源文件.和项目,或返回的未知错误.请重新安装服务程序." 的时 ...

  10. GUETSEC

    1. GUETSEC栈溢出 可以看到它看起来好像有四个栈溢出,我们逐个点进去 __isoc99_scanf("%20s", v1):限制了读取20个字符串(但其实无法完全杜绝缓冲区 ...