github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/builtins/events/onSignalReceived/signal_posix.go (about) 1 //go:build !plan9 && !js 2 // +build !plan9,!js 3 4 package signaltrap 5 6 import ( 7 "fmt" 8 "os" 9 10 "github.com/lmorg/murex/lang" 11 "github.com/lmorg/murex/lang/types" 12 ) 13 14 func cmdSendSignal(p *lang.Process) error { 15 if p.Parameters.Len() == 0 { 16 return autocompleteSignals(p) 17 } 18 19 p.Stdout.SetDataType(types.Null) 20 21 pid, err := p.Parameters.Int(0) 22 if err != nil { 23 return err 24 } 25 26 sig, err := p.Parameters.String(1) 27 if err != nil { 28 return err 29 } 30 31 proc, err := os.FindProcess(pid) 32 if err != nil { 33 return err 34 } 35 36 if !isValidInterrupt(sig) { 37 return fmt.Errorf("invalid signal name '%s'. Expecting something like 'SIGINT'", sig) 38 } 39 40 return proc.Signal(interrupts[sig]) 41 }