"reaper" utilizes the reap package to build an executable intermediary process runner. This runner is meant to be executed by other Go programs, in order to create detached processes for them.
Run go get github.com/foresthoffman/reaper
In order for the reaper executable to work, you must have $GOPATH/bin in your $PATH environment variable.
This package is not a library. It provides an executable that can be used by other programs, therefore importing it doesn't do anything.
Here's a simple example of the syntax:
package main
import (
"bytes""fmt""os/exec""strconv"
)
funcmain() {
// prepare a buffer, to which the PID will be writtenvarstdout bytes.Buffer// prepare the commandsleepCmd:=exec.Command("reaper", "-cmd='sleep'", "-args='30'")
sleepCmd.Stdout=&stdout// run the commanderr:=sleepCmd.Run()
ifnil!=err {
panic(err)
}
// convert the PID string to a valid integerpidInt, err:=strconv.ParseInt(stdout.String(), 10, 64)
ifnil!=err {
panic(err)
}
pid:=int(pidInt)
fmt.Printf("Created a detached process with an ID of %d!\n", pid)
}That's all, enjoy!