1 // Copyright 2012 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package base 6 7 import ( 8 "os" 9 "os/signal" 10 "sync" 11 ) 12 13 // Interrupted is closed when the go command receives an interrupt signal. 14 var Interrupted = make(chan struct{}) 15 16 // processSignals setups signal handler. 17 func processSignals() { 18 sig := make(chan os.Signal, 1) 19 signal.Notify(sig, signalsToIgnore...) 20 go func() { 21 <-sig 22 close(Interrupted) 23 }() 24 } 25 26 var onceProcessSignals sync.Once 27 28 // StartSigHandlers starts the signal handlers. 29 func StartSigHandlers() { 30 onceProcessSignals.Do(processSignals) 31 } 32