diff --git a/lib/atexit/atexit.go b/lib/atexit/atexit.go index c369eb787..12b48ed86 100644 --- a/lib/atexit/atexit.go +++ b/lib/atexit/atexit.go @@ -31,11 +31,10 @@ func Register(fn func()) FnHandle { fns[&fn] = true fnsMutex.Unlock() - // Run AtExit handlers on SIGINT or SIGTERM so everything gets - // tidied up properly + // Run AtExit handlers on exitSignals so everything gets tidied up properly registerOnce.Do(func() { exitChan = make(chan os.Signal, 1) - signal.Notify(exitChan, os.Interrupt) // syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT + signal.Notify(exitChan, exitSignals...) go func() { sig := <-exitChan if sig == nil { diff --git a/lib/atexit/atexit_other.go b/lib/atexit/atexit_other.go new file mode 100644 index 000000000..15faa7448 --- /dev/null +++ b/lib/atexit/atexit_other.go @@ -0,0 +1,9 @@ +//+build windows plan9 + +package atexit + +import ( + "os" +) + +var exitSignals = []os.Signal{os.Interrupt} diff --git a/lib/atexit/atexit_unix.go b/lib/atexit/atexit_unix.go new file mode 100644 index 000000000..acebfaf1c --- /dev/null +++ b/lib/atexit/atexit_unix.go @@ -0,0 +1,10 @@ +//+build !windows,!plan9 + +package atexit + +import ( + "os" + "syscall" +) + +var exitSignals = []os.Signal{syscall.SIGINT, syscall.SIGTERM} // Not syscall.SIGQUIT as we want the default behaviour