Linux中'Ctrl + c'按键的作用

本文最后更新于2016年8月6日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

缘由:

「What does CTRL-c do?」

正文:
  • Ctrl-c 是向终端发送 SIGINT 信号「intr = ^C」,终止一个进程/任务
  • Ctrl-z 是向终端发送 SIGSTOP 信号「susp = ^Z」,挂起一个进程/任务(任务并没有结束,它仍然在进程列表中,只是维持挂起的状态(T),用户可以使用fg/bg命令继续前台或后台的任务,fg命令重新启动前台被挂起的任务,bg命令把被挂起的任务放在后台执行)
  • Ctrl-d 不是发送信号,而是表示一个特殊的二进制值「eof = ^D」,表示 EOF ;在Windows下是通过组合键 Ctrl-z 来表示 EOF

Linux、Mac下可以通过 stty -a 命令看终端配置(也可以通过stty命令进行修改):

如果不希望 Ctrl-c 按键起作用,或者想要插入自己的处理程序,可以使用stty禁用该功能,或者使用trap捕获该信号,插入自己的处理程序。

#使用stty禁用该(Ctrl-c)功能

在bash脚本中插入如下命令即可:

请注意,该命令同时把整个终端的设置都改掉,导致 Ctrl-c 对于其它程序也不能用,所以在你的程序末尾还要将 Ctrl-c 恢复,使用如下命令:

#使用trap捕获该(Ctrl-c)信号

首先定义一个处理函数,比如 cleans ,用于捕获信号后的处理。

然后使用trap捕获信号

花括号中是处理函数的名称,后面的数字是信号量的代号。使用 kill -l 命令可以查看各种信号量的代码,其中中断信号(SIGINT)就是2。

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/2790.html

《Linux中'Ctrl + c'按键的作用》上有2条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注