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