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

三者的區別

Ctrl+C :強制中斷程序,程序不管運行哪裏都中止。php

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

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

引用別人的說法:post

一、Ctrl+C比較暴力,就是發送Terminal到當前的程序,好比你正在運行一個查找功能,文件正在查找中,Ctrl+C就會強制結束當前的這個進程。
二、Ctrl+Z 是把當前的程序掛起,暫停執行這個程序,好比你正在mysql終端中,須要出來搞點其餘的文件操做,又不想退出mysql終端(由於下次還得輸入用戶名密碼進入,挺麻煩),因而能夠ctrl+z將mysql掛起,而後進行其餘操做,而後輸入 fg 回車後就能夠回來,固然能夠掛起好多進程到後臺,而後 fg 加編號就能把掛起的進程返回到前臺。固然,配合bg(後臺)和fg命令進行先後臺切換會很是方便。
三、Ctrl+D 是發送一個exit信號,沒有那麼強烈,相似ctrl+C的操做,好比你從管理員root退回到你的普通用戶就能夠這麼用測試

驗證過程

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

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

    在cli模式下,咱們運行demo.php,並使用ctrl+z「掐斷」程序,以下:.net

  咱們猜想,若是進程僅是掛起,那麼使用fg(前臺運行)或bg(後臺運行)命令(使用fg或bg命令前,能夠先執行jobs命令,查看後臺運行的進程),是能夠繼續將進程喚起執行的,咱們使用fg測試效果以下:code

 

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

  一樣,咱們使用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

相關文章
相關標籤/搜索