Index: src/cmd/go/signal.go |
=================================================================== |
new file mode 100644 |
--- /dev/null |
+++ b/src/cmd/go/signal.go |
@@ -0,0 +1,32 @@ |
+// Copyright 2012 The Go Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style |
+// license that can be found in the LICENSE file. |
+ |
+package main |
+ |
+import ( |
+ "os" |
+ "os/signal" |
+ "sync" |
+) |
+ |
+var interrupted = make(chan struct{}) |
+ |
+// ignoreSignals setup for some signals to be ignored. |
+func ignoreSignals() { |
+ sig := make(chan os.Signal) |
+ signal.Notify(sig, signalsToIgnore...) |
+ go func() { |
+ for _ = range sig { |
+ close(interrupted) |
+ return |
+ } |
+ }() |
+} |
+ |
+var onceIgnoreSignals sync.Once |
+ |
+// startSigHandlers start signal handlers. |
+func startSigHandlers() { |
+ onceIgnoreSignals.Do(ignoreSignals) |
+} |