agent-orchestrator/backend/internal/cli/process.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
}