<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                signal.go ~~~ package main import ( "os" "os/signal" "syscall" "github.com/astaxie/beego/logs" ) // InitSignal register signals handler. /* 信號處理模塊,可用于在線加載配置,配置動態加載的信號為SIGHUP。 */ func InitSignal() { c := make(chan os.Signal, 1) /* func Notify(c chan<- os.Signal, sig ...os.Signal) Notify函數讓signal包將輸入信號轉發到c。如果沒有列出要傳遞的信號,會將所有輸入信號傳遞到c;否則只傳遞列出的輸入信號。 signal包不會為了向c發送信息而阻塞(就是說如果發送時c阻塞了,signal包會直接放棄):調用者應該保證c有足夠的緩存空間可以跟上期望的信號頻率。對使用單一信號用于通知的通道,緩存為1就足夠了。 可以使用同一通道多次調用Notify:每一次都會擴展該通道接收的信號集。唯一從信號集去除信號的方法是調用Stop。可以使用同一信號和不同通道多次調用Notify:每一個通道都會獨立接收到該信號的一個拷貝。 */ /* syscall 包含一個低級的操作系統原語的接口 */ /* SIGHUP 終端控制進程結束(終端連接斷開) SIGQUIT 用戶發送QUIT字符(Ctrl+/)觸發 SIGTERM 結束程序(可以被捕獲、阻塞或忽略) SIGINT 用戶發送INTR字符(Ctrl+C)觸發 SIGSTOP 停止進程(不能被捕獲、阻塞或忽略) */ // ??? signal.Notify(c, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT, syscall.SIGSTOP) for { s := <-c logs.Info("comet[%s] get a signal %s", s.String()) switch s { case syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGSTOP, syscall.SIGINT: return case syscall.SIGHUP: /* 觸發條件 命令行 $ kill -SIGHUP + 進程的 PID Example: kill -SIGHUP 84899 */ reload() default: return } } } func reload() { logs.Error("after Conf --> %v", Conf) err := InitConf() if err != nil { logs.Error("InitConf() error(%v)", err) return } logs.Error("before Conf --> %v", Conf) } ~~~ main.go ~~~ package main import ( "flag" ) func main() { flag.Parse() if err := InitConf(); err != nil { panic(err) } if err := InitLogs(); err != nil { panic(err) } if err := InitCatcher(); err != nil { panic(err) } if err := InitKafka(Conf.Kafka_addr); err != nil { panic(err) } go catcher(catcherUrl) // 放在main函數最后 InitSignal() } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看