This is a golang lib, add a Terminate
command to exec.
Tested on windows, linux, darwin.
This lib has been used in fswatch.
go get -v github.com/codeskyblue/kexec
example1:
package main
import "github.com/codeskyblue/kexec"
func main(){
p := kexec.Command("python", "flask_main.py")
p.Start()
p.Terminate(syscall.SIGINT)
}
example2: see more examples
package main
import (
"github.com/codeskyblue/kexec"
)
func main() {
// In unix will call: bash -c "python flask_main.py"
// In windows will call: cmd /c "python flask_main.py"
p := kexec.CommandString("python flask_main.py")
p.Stdout = os.Stdout
p.Stderr = os.Stderr
p.Start()
p.Terminate(syscall.SIGKILL)
}
example3:
package main
import "github.com/codeskyblue/kexec"
func main() {
p := kexec.Command("whoami")
p.SetUser("codeskyblue") // Only works on darwin and linux
p.Run()
}
$ go get -v github.com/codeskyblue/kexec/cmds/kexec
$ kexec python main.py
# Ctrl+C
python is terminating ...
This lib also support you call Wait()
twice, which is not support by os/exec