1package signals 2 3import ( 4 "fmt" 5 "os" 6 "sort" 7 "strings" 8) 9 10// SIGNIL is the nil signal. 11var SIGNIL os.Signal = new(NilSignal) 12 13// ValidSignals is the list of all valid signals. This is built at runtime 14// because it is OS-dependent. 15var ValidSignals []string 16 17func init() { 18 valid := make([]string, 0, len(SignalLookup)) 19 for k := range SignalLookup { 20 valid = append(valid, k) 21 } 22 sort.Strings(valid) 23 ValidSignals = valid 24} 25 26// Parse parses the given string as a signal. If the signal is not found, 27// an error is returned. 28func Parse(s string) (os.Signal, error) { 29 sig, ok := SignalLookup[strings.ToUpper(s)] 30 if !ok { 31 return nil, fmt.Errorf("invalid signal %q - valid signals are %q", 32 s, ValidSignals) 33 } 34 return sig, nil 35} 36