1. 程式人生 > >ctrl+c ctrl+d ctrl+z 的區別和使用場景

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

場景 過程 命令 live TP 其他 image jobs 麻煩

三者的區別

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

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