zry 4 years ago
parent
commit
4597608cc9
1 changed files with 31 additions and 0 deletions
  1. 31 0
      lazyquit.go

+ 31 - 0
lazyquit.go

@@ -0,0 +1,31 @@
+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)
+}