github.com/sean-/go@v0.0.0-20151219100004-97f854cd7bb6/src/cmd/go/signal.go (about) 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 main 6 7 import ( 8 "os" 9 "os/signal" 10 "sync" 11 ) 12 13 // interrupted is closed, if go process is interrupted. 14 var interrupted = make(chan struct{}) 15 16 // processSignals setups signal handler. 17 func processSignals() { 18 sig := make(chan os.Signal) 19 signal.Notify(sig, signalsToIgnore...) 20 go func() { 21 <-sig 22 close(interrupted) 23 }() 24 } 25 26 var onceProcessSignals sync.Once 27 28 // startSigHandlers start signal handlers. 29 func startSigHandlers() { 30 onceProcessSignals.Do(processSignals) 31 }