From be12d77a88a53e4a57d66753956a4ded95213010 Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期四, 16 一月 2020 16:32:49 +0800 Subject: [PATCH] fixed reid shm ipc bug --- app/master/reaper.go | 23 ++++++++++++++++++----- 1 files changed, 18 insertions(+), 5 deletions(-) diff --git a/app/master/reaper.go b/app/master/reaper.go index d35a2d3..1c48d59 100644 --- a/app/master/reaper.go +++ b/app/master/reaper.go @@ -30,7 +30,7 @@ logo.Infoln("pid : [", pid, "] quit") } delete(procMap, pid) - runProc(ctxt, info.cmd.Path, info.cmd.Args[1:], &info.env) + runProc(ctxt, info.cmd.Path, info.cmd.Args[1:], info.env) } else { logo.Errorln(pid, " doesn't exist") } @@ -47,18 +47,31 @@ logo.Errorln(pid, " doesn't exist") } } -func runProc(ctxt context.Context, bin string, args []string, env *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) + rEnv := "" + if len(env) != 0 { + runtime := "LD_LIBRARY_PATH" + rEnv = runtime + "=" + env + logo.Infoln("Env String: ", rEnv) + + // remove os environ ld + old := os.Getenv(runtime) + os.Unsetenv(runtime) + cmd.Env = os.Environ() + cmd.Env = append(cmd.Env, rEnv) + os.Setenv(runtime, old) + } pid := -1 cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr + cmd.SysProcAttr = &syscall.SysProcAttr{Pdeathsig: syscall.SIGTERM} + err := cmd.Start() if err == nil { pid = cmd.Process.Pid - procMap[pid] = &procInfo{cmd, *env} + procMap[pid] = &procInfo{cmd, env} } return pid, err } -- Gitblit v1.8.0