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

相关文章
相关标签/搜索