diff options
Diffstat (limited to 'vendor/github.com/cloudflare/tableflip/process.go')
-rw-r--r-- | vendor/github.com/cloudflare/tableflip/process.go | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/vendor/github.com/cloudflare/tableflip/process.go b/vendor/github.com/cloudflare/tableflip/process.go new file mode 100644 index 000000000..c918a88c8 --- /dev/null +++ b/vendor/github.com/cloudflare/tableflip/process.go @@ -0,0 +1,47 @@ +package tableflip + +import ( + "fmt" + "os" + "os/exec" +) + +var initialWD, _ = os.Getwd() + +type process interface { + fmt.Stringer + Signal(sig os.Signal) error + Wait() error +} + +type osProcess struct { + cmd *exec.Cmd +} + +func newOSProcess(executable string, args []string, files []*os.File, env []string) (process, error) { + cmd := exec.Command(executable, args...) + cmd.Dir = initialWD + cmd.Stdin = os.Stdin + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + cmd.ExtraFiles = files + cmd.Env = env + + if err := cmd.Start(); err != nil { + return nil, err + } + + return &osProcess{cmd}, nil +} + +func (osp *osProcess) Signal(sig os.Signal) error { + return osp.cmd.Process.Signal(sig) +} + +func (osp *osProcess) Wait() error { + return osp.cmd.Wait() +} + +func (osp *osProcess) String() string { + return fmt.Sprintf("pid=%d", osp.cmd.Process.Pid) +} |