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