ctrl+c和ctrl+z都是中斷命令,但是他們的作用卻不一樣:
ctrl+c是強制中斷程序的執行,進程已經終止。
ctrl+z的是將任務中止(暫停的意思),但是此任務並沒有結束,他仍然在進程中他只是維持掛起的狀態,用戶可以使用fg/bg操作繼續前台或后台的任務,fg命令重新啟動前台被中斷的任務,bg命令把被中斷的任務放在后台執行。
例如:當你vi一個文件是,如果需要用shell執行別的操作,但是你又不打算關閉vi,因為你得存盤推出,你可以簡單的按下ctrl+z,shell會將vi進程掛起~,當你結束了那個shell操作之后,你可以用fg命令繼續vi你的文件。
ctrl+d 不是發送信號,而是表示一個特殊的二進制值,表示 EOF (end of file)。
Linux 的哲學是一切皆文件,自然包括當前你與服務器的對話,也是一個你在不斷寫,服務器在不斷讀的文件,EOF 表示文件結束,讀到該指令,服務器自然結束與你的對話。
注:在shell中,ctrl-d表示推出當前shell.
學習此類需要有發散的角度,比如連接服務器后,
你可以說建立了一個窗口,MAC 中關閉窗口可以結束對話。
你可以說新建一個進程,操作系統中終止進程可以結束對話。
你可以說 OS 在讀一個實時創作的文件,Ctrl+d = EOF 可以結束對話。