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