package proc import ( "git.diulo.com/mogfee/kit/logx" "os" "os/signal" "syscall" ) const timeFormat = "0102150405" var done = make(chan struct{}) func init() { go func() { var profiler Stopper signals := make(chan os.Signal, 1) signal.Notify(signals, syscall.SIGUSR1, syscall.SIGUSR2, syscall.SIGTERM) for { v := <-signals switch v { case syscall.SIGUSR1: dumpGoroutines() case syscall.SIGUSR2: if profiler == nil { profiler = StartProfile() } else { profiler.Stop() profiler = nil } case syscall.SIGTERM: select { case <-done: default: close(done) } default: logx.Error("Got unregistered signal:", v) } } }() } func Done() <-chan struct{} { return done }