ctrl+c ctrl+d ctrl+z 的区别和使用场景

Posted jinxiao-pu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于ctrl+c ctrl+d ctrl+z 的区别和使用场景的主要内容,如果未能解决你的问题,请参考以下文章

linux中ctrl+z,ctrl+d,ctrl+c的区别

Linux中ctrl+z ctrl+c ctrl+d区别

Linux后台进程管理以及ctrl+z(挂起)ctrl+c(中断)ctrl+(退出)和ctrl+d(EOF)的区别(转)

linux ctrl+c,ctrl+z,ctrl+d

CentOS中Ctrl+ZCtrl+CCtrl+D的区别

ctrl+c 和 ctrl+z 的区别