go程序panic导致core时的处理问题

highfly43 · 2016-05-27 02:28:12 · 2325 次点击

捕获不到 SIGABRT 信号?

#1
更多评论

是没有捕捉到SIGABRT信号。

信号是通过以下方式捕捉的:

c := make(chan os.Signal)
defer close(c)

signal.Notify(c)

for {
    sig := <-c
    log.LOG_INFO_F("recv sig :%v", sig)
}

不知道是不是我的信号捕捉有问题。

#2

写了个简单的demo:

package main

import (
    "fmt"
    "os"
    "os/signal"
    "time"
)

func dealSignal() {
    sigChan := make(chan os.Signal)
    defer close(sigChan)

    signal.Notify(sigChan)

    for {
        sig := <-sigChan
        fmt.Println("recv sig :", sig)
    }
}

func coreFunc() {
    var mapCore map[int]int
    //此处会panic
    mapCore[0] = 1
}

func main() {
    go dealSignal()

    time.Sleep(3 * time.Second)

    go coreFunc()
    time.Sleep(3 * time.Second)
}
#3