package main import ( "local/rssmon3/config" "local/rssmon3/monitor" "local/rssmon3/server" "log" "os" "os/signal" "syscall" "time" ) func main() { log.SetPrefix("..") time.Local = time.FixedZone("UTC-6", (-6*int(time.Hour))/int(time.Second)) sigc := make(chan os.Signal) if err := config.New(); err != nil { panic(err) } log.Println(config.Values()) s := server.New() if err := s.Routes(); err != nil { panic(err) } go InterruptAfter(s.Run, sigc) m := monitor.New() go InterruptAfter(m.Run, sigc) signal.Notify(sigc, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT, ) <-sigc config.Values().Can() config.Values().DB.Close() } func InterruptAfter(foo func() error, c chan os.Signal) { if err := foo(); err != nil { log.Println(err) } c <- syscall.SIGINT }