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

Piper蛋窩發表於2021-09-08

unsplash.com/@jay_zhang

開啟我們的命令列,輸入 python ,我們會進入 python 的互動模式。

Linux 下進入了 python 互動模式

當我們想退出 python ,返回我們的 shell 時,你將如何退出?

quit() 和 exit()

如上,兩個行之有效的方法是輸入 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 語言例子。

按字元讀入

輸入輸出,測試平臺 AcWing

但注意,-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 中用 ctrl+c 打斷程式

如果你真的想通過殺死程式的方式來退出 python ,那我這裡有一套 powershellshell 的命令。

tasklist | where {$_ -match "python"}
kill <python程式PID>

powershell

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

shell

相關文章