在运行exec时做一些事情

  • 本文关键字:运行 exec go cmd
  • 更新时间 :
  • 英文 :


我不知道如何在运行二进制文件时做一些事情。

cmd = exec.Command("./app-godemon-app-godemon-tmp-generated")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Run()
fmt.Println("A")

文件app-godemon-app-godemon-tmp-generated是运行在端口8000上的REST API应用程序,我想在命令行中打印一些东西,而这个API正在运行,但fmt.Println()只有在停止app-godemon-app-godemon-tmp-generated进程后才运行。

你可以这样做:

cmd = exec.Command("./app-godemon-app-godemon-tmp-generated")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
go cmd.Run()
fmt.Println("A")

但是如果你的命令调用依赖于彼此,你必须添加更多的代码,如

// call command...
// initialize
finish := make(chan struct{}) // i em using empty struct as data is not important
go func() {
// do staff...
// finished so send signal
finish <- struct{}{}
}()
//do staff...
<-finish
// call dependent commands, as line above halts progrum until something arrives from channel

你应该将这个逻辑封装在返回通道并接受函数

的函数中

最新更新