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