美文网首页
trap命令详解

trap命令详解

作者: 水平号 | 来源:发表于2020-03-04 17:39 被阅读0次

    三种反应方式

    trap捕捉到信号之后,可以有三种反应方式:

    1,执行一段程序来处理这一信号
    2, 接受信号的默认操作
    3, 忽视这一信号

    三种命令形式

    trap对上面三种方式提供了三种基本形式:

    # 第一种形式的trap命令在shell接收到signal list清单中数值相同的信号时,将执行双引号中的命令串。
    trap 'commands' signal-list
    trap "commands" signal-list
     
    # 为了恢复信号的默认操作,使用第二种形式的trap命令:
    trap signal-list
     
    # 第三种形式的trap命令允许忽视信号
    trap " " signal-list
    

    忽略信号

    通常我们需要忽略的信号有四个,即:HUP, INT, QUIT, TSTP,也就是信号1, 2, 3, 24使用这样的语句可以使这些中断信号被忽略:

    trap "" 1 2 3 24 或 trap "" HUP INT QUIT TSTP

    用trap :1 2 3 24 或 trap HUP INT QUIT TSTP使其回复默认值。

    kill -l可以列出系统的信号名称,如下

    shell> kill -l
     1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
     6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
    11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
    16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
    21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
    26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
    31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
    38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
    43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
    48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
    53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
    58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
    63) SIGRTMAX-1  64) SIGRTMAX
    

    用stty -a可以列出中断信号与键盘的对应,分别执行上面的命令后,运行 tail -f /etc/passwd, 然后尝试用键盘中断,试试两种情况(默认和忽略)下有何不同。

    shell> stty -a
    speed 38400 baud; rows 24; columns 94; line = 0;
    intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>;
    swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
    flush = ^O; min = 1; time = 0;
    -parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
    -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc ixany
    -imaxbel iutf8
    opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
    isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
    
    image.png

    相关文章

      网友评论

          本文标题:trap命令详解

          本文链接:https://www.haomeiwen.com/subject/yiublhtx.html