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 --- /dev/null | 0 sdkconfig.yaml | 3 +++ proc/master.go | 26 +++++++++++++++++++++++--- proc/reaper.go | 24 ++++++++++++++++-------- 4 files changed, 42 insertions(+), 11 deletions(-) diff --git a/build-libdarknet.so b/build-libdarknet.so deleted file mode 100755 index 667361e..0000000 --- a/build-libdarknet.so +++ /dev/null Binary files differ diff --git a/build.log b/build.log deleted file mode 100644 index e69de29..0000000 --- a/build.log +++ /dev/null diff --git a/proc/master.go b/proc/master.go index 7c69c0a..eec37c2 100644 --- a/proc/master.go +++ b/proc/master.go @@ -4,6 +4,8 @@ "analysis/logo" "analysis/util" "context" + + "github.com/spf13/viper" ) func reaper(ctxt context.Context) { @@ -18,17 +20,35 @@ util.InitDBAPI() + const ( + configFilePath = "/opt/vasystem/config/" + configFileName = "sdkconfig" + configFileType = "yaml" + ) + viper.SetConfigType(configFileType) + viper.SetConfigName(configFileName) + viper.AddConfigPath(configFilePath) + viper.AddConfigPath("./") + + envString := "" + sdks := util.SDKInfo() for k, v := range sdks { + + if err := viper.ReadInConfig(); err == nil { + + envString = viper.GetString(v.SdkType) + + } + logo.Errorln("MASTER ANALYSIS START SLAVE TYPE: ", v.SdkType, " SDK CONFIG: ", envString) + args := []string{ `-role=slave`, "-sdk=" + v.SdkType, "-id=" + v.IpcId, } - args = append(args, (*util.GetParams())...) - - pid, err := runProc(ctx, "./analysis", args) + pid, err := runProc(ctx, "./analysis", args, &envString) if err != nil { logo.Errorf("ANALYSIS START SLAVE PROC %s IPC: %s error %+v\n", v.SdkType, v.IpcId, err) 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 } diff --git a/sdkconfig.yaml b/sdkconfig.yaml new file mode 100644 index 0000000..7d7da23 --- /dev/null +++ b/sdkconfig.yaml @@ -0,0 +1,3 @@ +FaceDetect: LD_LIBRARY_PATH=./libs:/usr/local/cuda-8.0/lib64 +Yolo: LD_LIBRARY_PATH=./libs:/usr/local/cuda-8.0/lib64 +HumanTrack: LD_LIBRARY_PATH=./libs:/usr/local/cuda-10.0/lib64 -- Gitblit v1.8.0