Macos 转到-关闭外部应用程序

Macos 转到-关闭外部应用程序,macos,go,Macos,Go,我在OSX机器上使用Go,试图制作一个程序来打开一个外部应用程序,然后在几秒钟后关闭它——应用程序,而不是退出Go脚本 我正在使用上提供的库启动应用程序,它工作正常。我也已经有超时运行。但是当我必须关闭应用程序时,问题就来了 有人能告诉我如何退出应用程序吗 提前感谢。该库似乎隐藏了用于关闭程序的详细信息,特别是进程ID(PID) 如果您使用os/exec包启动,或者在该PID上获得一个句柄,那么您可以使用Process对象终止应用程序,或者向应用程序发送信号,尝试优雅地关闭它 谢谢你们的帮助。我

我在OSX机器上使用Go,试图制作一个程序来打开一个外部应用程序,然后在几秒钟后关闭它——应用程序,而不是退出Go脚本

我正在使用上提供的库启动应用程序,它工作正常。我也已经有超时运行。但是当我必须关闭应用程序时,问题就来了

有人能告诉我如何退出应用程序吗


提前感谢。

该库似乎隐藏了用于关闭程序的详细信息,特别是进程ID(PID)

如果您使用os/exec包启动,或者在该PID上获得一个句柄,那么您可以使用Process对象终止应用程序,或者向应用程序发送信号,尝试优雅地关闭它


谢谢你们的帮助。我可以用下面的代码做我正在尝试的事情

cmd := exec.Command(path string)
    err := cmd.Start()
  if err != nil {
    log.Printf("Command finished with error: %v", err)
  }
  done := make(chan error, 1)
  go func() {
    done <- cmd.Wait()
  }()
  select {
  case <-time.After(30 * time.Second):      // Kills the process after 30 seconds
    if err := cmd.Process.Kill(); err != nil {
      log.Fatal("failed to kill: ", err)
    }
    <-done // allow goroutine to exit
    log.Println("process killed")
    indexInit()
    case err := <-done:
      if err!=nil{
        log.Printf("process done with error = %v", err)
      }
  }
    if err != nil {
        log.Fatal(err)
    }
    log.Printf("Waiting for command to finish...")
  //timer() // The time goes by...
    err = cmd.Wait()
}
cmd:=exec.Command(路径字符串)
错误:=cmd.Start()
如果出错!=零{
Printf(“命令完成时出现错误:%v”,err)
}
完成:=生成(chan错误,1)
go func(){

完成您可能应该自己执行外部命令,以便跟踪PID并发送适当的信号。使用
os/exec
:(“StartProcess是一个低级接口。os/exec包提供高级接口。”)