This is a golang lib, add a Terminate command to exec.
Tested on windows, linux, darwin.
This lib has been used in fswatch.
Usage
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() }
Command line usage
$ go get -v github.com/codeskyblue/kexec/cmds/kexec
$ kexec python main.py
# Ctrl+C
python is terminating ...
PS
This lib also support you call Wait() twice, which is not support by os/exec