so true

          心懷未來(lái),開創(chuàng)未來(lái)!
          隨筆 - 160, 文章 - 0, 評(píng)論 - 40, 引用 - 0
          數(shù)據(jù)加載中……

          關(guān)于trap的實(shí)驗(yàn)

          -------------------------------------
          trap 'date' SIGUSR2
          echo before
          while true; do
              sleep 0.01
          done
          echo after
          kill -SIGUSR2 XXX #date立即被執(zhí)行
          kill -SIGUSR2 XXX #date立即被執(zhí)行
          --------------------------------------
          trap 'date' SIGUSR2
          echo before
          sleep 10
          echo after
          kill -SIGUSR2 XXX #date未被執(zhí)行,直到sleep 10結(jié)束后立即被執(zhí)行,最后再打印出after
          --------------------------------------
          trap 'date' SIGUSR2
          echo before
          sleep 100 &
          wait
          echo after
          kill -SIGUSR2 XXX #wait被立即中斷(wait的返回碼是一個(gè)大于128的值),date立即被執(zhí)行,然后打印出after退出
          --------------------------------------
          shell在執(zhí)行過(guò)程中,在一個(gè)命令執(zhí)行過(guò)程中不會(huì)執(zhí)行trap指定的命令,只有在命令執(zhí)行完之后才會(huì)執(zhí)行trap指定的命令;
          Ctrl+c #給程序發(fā)送SIGINT信號(hào)
          Ctrl+\ #給程序發(fā)送SIGTERM信號(hào)
          bash shell會(huì)忽略SIGQUIT信號(hào),即:1個(gè)shell進(jìn)程run時(shí)發(fā)SIGQUIT不會(huì)退出;但你自己編譯的程序run時(shí)收到SIGQUIT是會(huì)退出的
          用EXIT來(lái)做清理:trap "{ rm -f $tmp_file ; exit 255; }" EXIT
          用ERR來(lái)做警告,可以參見:http://blog.csdn.net/sosodream/article/details/5681893和http://blog.csdn.net/sosodream/article/details/5724650
          用DEBUG來(lái)做調(diào)試,例如來(lái)跟蹤變量的變化:
          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) 評(píng)論(0)  編輯  收藏 所屬分類: Linux

          主站蜘蛛池模板: 衡南县| 鱼台县| 洛南县| 南昌县| 宜昌市| 巴林左旗| 临海市| 茂名市| 开封市| 汨罗市| 沧州市| 赣榆县| 鄂伦春自治旗| 鹤岗市| 彰武县| 延庆县| 财经| 太仓市| 金寨县| 射洪县| 漳浦县| 南雄市| 花垣县| 崇州市| 武功县| 明溪县| 桃园市| 怀宁县| 高台县| 新蔡县| 邯郸市| 苗栗市| 金阳县| 浪卡子县| 大余县| 宁南县| 夏河县| 洪泽县| 临沭县| 电白县| 库车县|