From c2ced9eaa6a8f174866ecbdb77d7ce7b02bb969c Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期二, 17 十二月 2019 16:40:52 +0800 Subject: [PATCH] add sdk config --- proc/reaper.go | 24 ++++++++++++++++-------- 1 files changed, 16 insertions(+), 8 deletions(-) diff --git a/proc/reaper.go b/proc/reaper.go index f0fbd8d..5a48028 100644 --- a/proc/reaper.go +++ b/proc/reaper.go @@ -10,14 +10,19 @@ "time" ) +type procInfo struct { + cmd *exec.Cmd + env string +} + var ( - procMap = make(map[int]*exec.Cmd) + procMap = make(map[int]*procInfo) ) func restartProc(ctxt context.Context, pid int) { - cmd, ok := procMap[pid] + info, ok := procMap[pid] if ok { - err := cmd.Wait() + err := info.cmd.Wait() if err != nil { logo.Errorln("pid : [", pid, "] quit error: ", err) @@ -25,32 +30,35 @@ logo.Infoln("pid : [", pid, "] quit") } delete(procMap, pid) - runProc(ctxt, cmd.Path, cmd.Args[1:]) + runProc(ctxt, info.cmd.Path, info.cmd.Args[1:], &info.env) } else { logo.Errorln(pid, " doesn't exist") } } func quitProc(pid int) { - cmd, ok := procMap[pid] + info, ok := procMap[pid] if ok { delete(procMap, pid) syscall.Kill(pid, syscall.SIGINT) - cmd.Wait() + info.cmd.Wait() } else { logo.Errorln(pid, " doesn't exist") } } -func runProc(ctxt context.Context, bin string, args []string) (int, error) { +func runProc(ctxt context.Context, bin string, args []string, env *string) (int, error) { cmd := exec.CommandContext(ctxt, bin, args...) + cmd.Env = os.Environ() + cmd.Env = append(cmd.Env, *env) + pid := -1 cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr err := cmd.Start() if err == nil { pid = cmd.Process.Pid - procMap[pid] = cmd + procMap[pid] = &procInfo{cmd, *env} } return pid, err } -- Gitblit v1.8.0