package go_lazy_quiter import ( "os" "os/signal" ) type LazyQuiter struct { qchan chan os.Signal } func NewLazyQuiter(sig ...os.Signal) *LazyQuiter { r := &LazyQuiter{qchan: make(chan os.Signal, 1)} if sig == nil { sig = []os.Signal{ os.Interrupt, os.Kill, } } signal.Notify(r.qchan, sig...) return r } func (q *LazyQuiter) Wait() os.Signal { return <-q.qchan } func (q *LazyQuiter) WaitQuit(return_num int) { <-q.qchan os.Exit(return_num) }