ctrl+c ctrl+d ctrl+z 的區別和使用場景


三者的區別

Ctrl+C :強制中斷程序,程序無論運行哪里都停止。

Ctrl+D :發送一個 exit 的信號,退出當前的用戶或者是客戶端。

Ctrl+Z :暫停程序,在進程中維持掛起狀態。

引用別人的說法:

1、Ctrl+C比較暴力,就是發送Terminal到當前的程序,比如你正在運行一個查找功能,文件正在查找中,Ctrl+C就會強制結束當前的這個進程。
2、Ctrl+Z 是把當前的程序掛起,暫停執行這個程序,比如你正在mysql終端中,需要出來搞點其他的文件操作,又不想退出mysql終端(因為下次還得輸入用戶名密碼進入,挺麻煩),於是可以ctrl+z將mysql掛起,然后進行其他操作,然后輸入 fg 回車后就可以回來,當然可以掛起好多進程到后台,然后 fg 加編號就能把掛起的進程返回到前台。當然,配合bg(后台)和fg命令進行前后台切換會非常方便。
3、Ctrl+D 是發送一個exit信號,沒有那么強烈,類似ctrl+C的操作,比如你從管理員root退回到你的普通用戶就可以這么用

驗證過程

  先寫這樣一個php程序(demo.php):

<?php
$number = 0;
while(true){
    file_put_contents('demo.log',$number.PHP_EOL,FILE_APPEND);
    $number++;
    sleep(1);
}

    在cli模式下,我們運行demo.php,並使用ctrl+z“掐斷”程序,如下:

  我們猜測,如果進程僅是掛起,那么使用fg(前台運行)或bg(后台運行)命令(使用fg或bg命令前,可以先執行jobs命令,查看后台運行的進程),是可以繼續將進程喚起執行的,我們使用fg測試效果如下:

 

  從上面的效果圖表象來看,demo.php又可以繼續執行,使用ctrl+z操作,僅是將進程掛起,進程未終止,仍可以喚起執行。讀者也可以通過觀察demo.log(tail -f demo.log)這個文件在整個過程中數字的變化,更加真切地感受驗證結果。

  同樣,我們使用ctrl+c操作,得到下面的結果圖:

 

  從上圖可以看出,ctrl+c操作后的進程,是徹底地被殺死了,讀者也可以看demo.log里的內容變化(ctrl+c操作后,demo.log里的內容不再增加)

 

參考鏈接

https://blog.csdn.net/llwan/article/details/50325185

http://www.thanks.live/index.php/posts/ctrl-z-c

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM