為什么在 Windows 下用 Ctrl+Z 退出 Python 而 Linux 下用 Ctrl+D 呢?
本文轉(zhuǎn)載自微信公眾號「Piper蛋窩」,作者Piper蛋 。轉(zhuǎn)載本文請聯(lián)系Piper蛋窩公眾號。
打開我們的命令行,輸入 python ,我們會進入 python 的交互模式。
Linux 下進入了 python 交互模式
當(dāng)我們想退出 python ,返回我們的 shell 時,你將如何退出?
quit() 和 exit()
如上,兩個行之有效的方法是輸入 exit() 或者 quit() 來中止這個 python 進程。
此外,還有一種更為人所熟知的方式:使用快捷鍵退出 。而這個操作在 Windows 和 Linux 兩個平臺是不同的——前者使用 Ctrl + z 而后者使用 Ctrl + d 。但是,為什么不同呢?
EOF, end of file
這就不得不提起文件結(jié)束符 EOF (end of file) 。
在 C 語言的 stdio.h 中, EOF 實際上就是 -1 :
- #define EOF (-1)
C 語言之父肯·湯普森與丹尼斯·里奇恰好也是 Unix 的締造者,而 Unix 深遠地影響了操作系統(tǒng)的發(fā)展:無論是 Windows 還是 Linux 。
當(dāng)我們接收輸入的“程序”接收到 -1 這個值時,程序便會知道:哦,這不就是 EOF 老兄嗎!現(xiàn)在已經(jīng)抵達文件的最末尾(end of file)了,我的接收輸入的工作也就完成了,可以下班了!
咱們來看一個簡單的 C 語言例子。
按字符讀入
輸入輸出,測試平臺 AcWing
但注意,-1 并不是數(shù)值對象,而就是 -1 這個輸入值,我們無法通過鍵盤上的 -1 直接鍵入,如果想要鍵入 -1 ,那么就需要:
- 在 Windows 上鍵入 Ctrl + z
- 在 Linux 上鍵入 Ctrl + d
所以,你也就知道為什么 在 Windows 下用 Ctrl+Z 退出 Python 而 Linux 下用 Ctrl+D 了吧!
一些補充
有朋友問了,Ctrl + c 也是殺死進程,為啥 Ctrl + c 不行呢?
我的理解是,在 python 的交互窗口里, Ctrl + c 用于殺死 python 的子進程,比如你進入死循環(huán)了。
python 中用 ctrl+c 打斷進程
如果你真的想通過殺死進程的方式來退出 python ,那我這里有一套 powershell 和 shell 的命令。
- tasklist | where {$_ -match "python"}
- kill <python進程PID>
powershell
- ps aux | grep python
- kill -9 <python進程PID>
shell