12345678910111213141516171819202122232425262728293031 |
- 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)
- }
|