diff --git a/terminator.go b/terminator.go new file mode 100644 index 0000000..dde3791 --- /dev/null +++ b/terminator.go @@ -0,0 +1,25 @@ +package terminator /* import "udico.de/uditaren/terminator" */ + +import ( + "os" + "os/signal" + "syscall" +) + +// enable to react to +// <-terminator.Terminate +// nicely +var Terminate = make(chan struct{}) + +func init() { + sigs := make(chan os.Signal) + signal.Notify(sigs, os.Interrupt, os.Kill) + signal.Notify(sigs, syscall.SIGTERM) + + // When notified about SIGINT, SIGTERM, or SIGKILL close the Terminator channel + // in order to notify interested parties to quit. + go func(c <-chan os.Signal) { + <-c + close(Terminator) + }(sigs) +}