<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國際加速解決方案。 廣告
                [TOC] # 列出信號 ![](https://img.kancloud.cn/d3/3a/d33a6c13a1aab328ed2004a953f7673b_1118x288.png) # 發送信號 `kill -SIGKILL PID` # 信號處理 * 通過kill命令給正在運行的程序發送信號 * 不處理的話,程序會panic處理 Signal handler可以通過`signal()`系統調用進行設置。如果沒有設置,缺省的handler會被調用,當然進程也可以設置忽略此信號。 有兩種信號不能被攔截和處理:`SIGKILL`和`SIGSTOP` 當接收到信號時,進程會根據信號的響應動作執行相應的操作,信號的響應動作有以下幾種: * 中止進程(Term) * 忽略信號(Ign) * 中止進程并保存內存信息(Core) * 停止進程(Stop) * 繼續運行進程(Cont) 用戶可以通過`signal`或`sigaction`函數修改信號的響應動作(也就是常說的“注冊信號”)。另外,在多線程中,各線程的信號響應動作都是相同的,不能對某個線程設置獨立的響應動作。 # 信號介紹 * Ctrl-C 發送 INT signal (SIGINT),通常導致進程結束 * Ctrl-Z 發送 TSTP signal (SIGTSTP); 通常導致進程掛起(suspend) * Ctrl-\\ 發送 QUIT signal (SIGQUIT); 通常導致進程結束 和 dump core. * Ctrl-T (不是所有的UNIX都支持) 發送INFO signal (SIGINFO); 導致操作系統顯示此運行命令的信息 個平臺的信號定義或許有些不同。下面列出了POSIX中定義的信號。 Linux 使用34-64信號用作實時系統中。 命令`man 7 signal`提供了官方的信號介紹。 在POSIX.1-1990標準中定義的信號列表 ![](https://img.kancloud.cn/9b/7e/9b7eba657dc3b30781c134f26bbaeca1_665x823.png) 在SUSv2和POSIX.1-2001標準中的信號列表: ![](https://img.kancloud.cn/96/7d/967dde520d2a0e02efdef387262285f2_631x448.png) # 信號處理 ~~~ package main import "fmt" import "os" import "os/signal" import "syscall" func main() { // Go信號通知通過向一個channel發送``os.Signal`來實現。 // 我們將創建一個channel來接受這些通知,同時我們還用 // 一個channel來在程序可以退出的時候通知我們 sigs := make(chan os.Signal, 1) done := make(chan bool, 1) // `signal.Notify`在給定的channel上面注冊該channel // 可以接受的信號 signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) // 這個goroutine阻塞等待信號的到來,當信號到來的時候, // 輸出該信號,然后通知程序可以結束了 go func() { sig := <-sigs fmt.Println() fmt.Println(sig) done <- true }() // 程序將等待接受信號,然后退出 fmt.Println("awaiting signal") <-done fmt.Println("exiting") } ~~~ 當運行程序的時候,程序將阻塞等待信號的到來,我們可以使用`CTRL+C`來發送一個`SIGINT`信號,這樣程序就會輸出interrupt后退出。 ~~~ awaiting signal interrupt exiting ~~~
                  <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>

                              哎呀哎呀视频在线观看