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  }