Bash下Ctrl-C、Ctrl-D和Ctrl-Z的区别

原文: http://haiquan.sinaapp.com/2013/03/%E3%80%90%E5%8E%9F%E5%88%9B%E3%80%91bash%E4%B8%8Bctrl-c%E3%80%81ctrl-d%E5%92%8Cctrl-z%E7%9A%84%E5%8C%BA%E5%88%AB/


     工作这么久了,还有好多问题不知道为什么,今天遇到的就是一个Linux下的小问题:Bash下Ctrl-C、Ctrl-D和Ctrl-Z的区别?

        今天开始尝试使用Google来解决技术上遇到的难题,Google了一下这个问题,得到如下答案,很简洁的。

Ctrl + C To terminate(终止进程)
Ctrl + D signals EOF(文件结束符)
Ctrl + Z suppends a program(暂停一个进程)
        下面写一个小程序,验证一下。
<?php
while ( true ) {
echo “hello\n”;
sleep ( 1 );
}
        解释一下,就是每隔一秒,打印一个hello。
        我们先使用Ctrl + D试一试。比较遗憾,没有效果(这是正确的)。
        我们再使用Ctrl + Z试一试。有效果,如下图:
我们看到,这个程序被停止了。是被kill掉了呢,还是仅仅被暂停了?
 
我们看到,这个程序并没有被kill掉,说明仅仅是被暂停了。
        好了,我们把这个程序kill掉,再尝试一下Ctrl + C。效果如下:
我们可以看到,这个程序是真的被终止了。
        写到这,我们已经可以区分出Ctrl + C和Ctrl + Z的区别了。那么Ctrl + D有什么作用呢?我们再写一个小程序。
<?php
$stdin = fopen ( ‘php://stdin’, ‘r’ ); while ( ( $line = fgets ( $stdin ) ) &&
! feof ( $stdin ) ) { echo “{$line}n”;
}
运行一下,效果如下:
        好了,现在我们已经知道了三者的区别,以后可不要再犯糊涂了。
PS:附加一个问题:被暂停的程序如何恢复执行呢?看看下面的效果。
哦,原来是fg命令呀,这下知道怎么恢复了!
PS:
fg %jobnumber 将后台的任务拿到前台来处理
bg %jobnumber 将任务放到后台中去处理
kill 管理后台的任务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值