func initGin() {
    // ? 带参数启动
    var port string
    flag.StringVar(&port, "p", "3312", "端口号默认:3312")
    flag.Parse()
    r := gin.Default()
    r.Any("/:name", func(c *gin.Context) {
        gitUpdate(c.Param("name"))
        c.JSON(200, "更新成功")
    })
    r.Run(":" + port)
}

func gitUpdate(name string) {
    buf, _ := ioutil.ReadFile("./config.yaml")
    var conf Conf
    _ = yaml.Unmarshal(buf, &conf)
    for _, value := range conf.Task {
        if name == value.Name {
            cmd := exec.Command("git", "pull")
            cmd.Dir = value.Path
            err := cmd.Run()
            if err != nil {
                fmt.Println(err)
            }

        }
    }
}

我这里是用的cmd.Run();

理论上来说来这里应该会阻塞,运行完毕后,在执行后台的代码。

但是如果我用supervisord 这个后台守护工具运行,程序是运行起来了的,但是这个git 命令感觉没有执行或者说,直接运行到下面的输出语句哪里去了,会直接输出 "更新成功"

但是我独立运行软件,git 又是成功执行的。

所以我有点晕。

是exec.Command(),cmd.Run() 的问题?

还是supervisord 的后台守护的问题?

请问如何处理!