so true

          心懷未來,開創未來!
          隨筆 - 160, 文章 - 0, 評論 - 40, 引用 - 0
          數據加載中……

          關于trap的實驗

          -------------------------------------
          trap 'date' SIGUSR2
          echo before
          while true; do
              sleep 0.01
          done
          echo after
          kill -SIGUSR2 XXX #date立即被執行
          kill -SIGUSR2 XXX #date立即被執行
          --------------------------------------
          trap 'date' SIGUSR2
          echo before
          sleep 10
          echo after
          kill -SIGUSR2 XXX #date未被執行,直到sleep 10結束后立即被執行,最后再打印出after
          --------------------------------------
          trap 'date' SIGUSR2
          echo before
          sleep 100 &
          wait
          echo after
          kill -SIGUSR2 XXX #wait被立即中斷(wait的返回碼是一個大于128的值),date立即被執行,然后打印出after退出
          --------------------------------------
          shell在執行過程中,在一個命令執行過程中不會執行trap指定的命令,只有在命令執行完之后才會執行trap指定的命令;
          Ctrl+c #給程序發送SIGINT信號
          Ctrl+\ #給程序發送SIGTERM信號
          bash shell會忽略SIGQUIT信號,即:1個shell進程run時發SIGQUIT不會退出;但你自己編譯的程序run時收到SIGQUIT是會退出的
          用EXIT來做清理:trap "{ rm -f $tmp_file ; exit 255; }" EXIT
          用ERR來做警告,可以參見:http://blog.csdn.net/sosodream/article/details/5681893和http://blog.csdn.net/sosodream/article/details/5724650
          用DEBUG來做調試,例如來跟蹤變量的變化:
          trap "echo tmp_value is being changed." DEBUG
          bla bla bla
          declare -t tmp_value=38

          posted on 2013-08-14 16:08 so true 閱讀(409) 評論(0)  編輯  收藏 所屬分類: Linux

          主站蜘蛛池模板: 辽阳市| 岢岚县| 鄂尔多斯市| 滁州市| 元氏县| 福清市| 蕉岭县| 西乌珠穆沁旗| 平利县| 江门市| 玉溪市| 通州市| 敦化市| 左贡县| 邢台县| 玉门市| 玉溪市| 蓬莱市| 务川| 灵山县| 宝丰县| 万年县| 京山县| 平定县| 岳普湖县| 昭平县| 汽车| 萍乡市| 通河县| 固始县| 荔波县| 泰兴市| 仪陇县| 阿克陶县| 云和县| 明溪县| 于田县| 贺兰县| 湟源县| 韩城市| 凉山|