31 lines
534 B
Go
31 lines
534 B
Go
package cli
|
|
|
|
import (
|
|
"os"
|
|
"os/exec"
|
|
)
|
|
|
|
type processStartConfig struct {
|
|
Path string
|
|
Args []string
|
|
Env []string
|
|
Stdout *os.File
|
|
Stderr *os.File
|
|
}
|
|
|
|
type processHandle struct {
|
|
PID int
|
|
}
|
|
|
|
func startProcess(cfg processStartConfig) (processHandle, error) {
|
|
cmd := exec.Command(cfg.Path, cfg.Args...)
|
|
cmd.Env = cfg.Env
|
|
cmd.Stdout = cfg.Stdout
|
|
cmd.Stderr = cfg.Stderr
|
|
if err := cmd.Start(); err != nil {
|
|
return processHandle{}, err
|
|
}
|
|
go func() { _ = cmd.Wait() }()
|
|
return processHandle{PID: cmd.Process.Pid}, nil
|
|
}
|