当前位置:  技术问答>linux和unix

关于trap命令的问题

    来源: 互联网  发布时间:2016-08-05

    本文导语:  我的理解:trap应该是说在接受到信号的时候执行指定的指令,比如在接受到exit指令时打印点东西 trap "echo something;exit" 0 然后这个exit的默认行为(也就是退出)是取消了 但是为什么 trap "echo something" 0 我退出终端...

我的理解:trap应该是说在接受到信号的时候执行指定的指令,比如在接受到exit指令时打印点东西
trap "echo something;exit" 0
然后这个exit的默认行为(也就是退出)是取消了
但是为什么
trap "echo something" 0
我退出终端的时候他直接就退出了,而不是输出something然后继续存在?

|


的确

trap命令就是在捕捉到指定信号之后,执行指定的指令。

trap "echo something" 0 

LZ这里,指定捕捉退出信号,而且是命令执行成功后的退出信号。

你把这句放到一个脚本中去。他确实是捕捉到了退出信号然后打印信息。

不知道LZ所谓的退出终端是什么意思

|



恩。

CTRL+D  这个信号其实被捕捉到了的。

但是,在你的trap被捕捉之前,已经被系统捕捉到了,而且这个有点特殊。

其他的信号,你可以试试 CTRL+这样的信号,这种信号同样也是被系统和你的trap捕捉到了

而且都做了相应的动作。

其实信号究竟有没有被别人捕捉不影响trap的。
就像,军官口令:立正。所有的人都听讲了,并且做出了反应。


但是  CRTL+D这信号时最特殊的。系统捕捉到了信号就把shell终端退出了。
即使你的trap也捕捉到了。但是,他也会试图去打印动作,
但是系统捕捉到了CTRL+D抢先就把shell终端给关闭了,你的trap就无法处理动作了。



|
你这里最大 争议无非就是终端不能被保留。

其余的都能正确执行。


主要是一个系统试图去关闭终端,但是你的trap试图去保留终端,但是,你的trap没有系统的权限级别高,最终还是被系统关闭了shell终端。

|
ctrl-c 发送 SIGINT 信号给前台进程组中的所有进程 常用于终止正在运行的程序
ctrl-z 发送 SIGTSTP 信号给前台进程组中的所有进程 常用于挂起一个进程
ctrl-d 不是发送信号 而是表示一个特殊的二进制值 表示EOF
ctrl- 发送 SIGQUIT 信号给前台进程组中的所有进程 终止前台进程并生成 core 文件
Ctrl-s 停止向终端输出 暂停该终端(某些人误按的人以为死机了) 
Ctrl-q 恢复向终端输出
Ctrl-l 清屏

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在线急等!!!!trap.s 和 trap.c 在Unix内核中起什么作用
  • 关于snmp 自定义 发送trap的事件!高分
  • 如何產生一個 Alignment Trap?
  • net-snmp的agent如何发送Trap
  • Unix系统 用C++怎么写接收SNMP Trap报文的程序?哪位兄弟手上有现成的代码呀?谢谢了
  • trap '' INT..为什么ctrl+c,不会终止脚本程序呢。这是Linux程序设计里面的例子。
  • JavaScript 快捷键功能库 Mouse Trap


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3