打开我们的命令行,输入 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. 宝塔linux 搭建

    前言 2020年的时候,用宝塔搭了个WordPress,一个人的博客不算是博客,没有社区氛围.就转到博客园了. 21年跟着教程,写了一个PHP的个人博客项目. 又有一台阿里云的服务器,就把代码部署上去 ...

  2. 彻底理解spring框架当中的依赖注入(DI)与控制反转(IOC)理念

    什么是依赖注入 人生当中第一次听说到这个概念是在spring框架的学习当中,当然依赖注入并不局限于spring,其实依赖注入早已不是一个新鲜词,而是一个犹如古董般的设计理念,但是我还年轻呐那么就从这里 ...

  3. Docker-compose 常用命令和模板

    docker-compose logs -f ##查看该容器的启动的日志打印(日志从头打印 docker logs -f container_id ##查看某一容器的启动的日志打印(日志从头打印) d ...

  4. Centos7系统docker部署Ferry工单系统

    1.更新yum源国内阿里1.1备份当前yum仓库配置sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.rep ...

  5. ESP8266+ MQTT+SG90(舵机) platformio

    ESP8266 + MQTT + SG90(舵机) platformio 连线 ESP8266 MG90S(舵机) GND 棕色 VCC 红色 模拟引脚 橙色 源代码 https://gitee.co ...

  6. mysql skip-name-resolve 的解释

    PHP交流群  717902309 为PHP广大爱好者提供技术交流,有问必答,相互学习相互进步! mysql连接很慢,登陆到服务器上查看mysql日志:IP address 'XX.XX.XX.XX' ...

  7. 开源 - Ideal库 - 常用时间转换扩展方法(二)

    书接上回,我们继续来分享一些关于时间转换的常用扩展方法. 01.时间转日期时间 TimeOnly 该方式是把TimeOnly类型转为DateTime类型,其中日期部分使用系统当前日期,时间部分则使用T ...

  8. 拯救php性能的神器webman-打包二进制

    看了看webman的官方文档,发现居然还能打包为二进制,这样太厉害了吧! 先执行这个  composer require webman/console ^1.2.24 安装这个console的包,然后 ...

  9. Django3.0

    Django3.0 简介 Django 最初被设计用于具有快速开发需求的新闻类站点,目的是要实现简单快捷的网站开发.以下内容简要介绍了如何使用 Django 实现一个数据库驱动的 Web 应用. Dj ...

  10. zynq 按照传统的Linux开发模式制作系统

    参考资料 xilinx wiki: https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/460653138/Xilinx+Open+Source ...