...

Source file src/pkg/cmd/go/internal/base/signal.go

     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)
    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	

View as plain text