我注意到使用 Start()
创建的子进程将在程序退出后终止,例如:
package main
import "os/exec"
func main() {
cmd := exec.Command("sh", "test.sh")
cmd.Start()
}
当main()
退出时,test.sh
会停止运行
最佳答案
子进程应该在你的进程结束后继续运行,只要它干净地结束,如果你点击 ^C
就不会发生这种情况。
您可以做的是拦截发送到您的进程的信号,这样您就可以干净利落地结束。
sigchan := make(chan os.Signal, 1)
signal.Notify(sigchan,
syscall.SIGINT,
syscall.SIGKILL,
syscall.SIGTERM,
syscall.SIGQUIT)
go func() {
s := <-sigchan
// do anything you need to end program cleanly
}()
关于go - golang程序退出后如何保持子进程运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42471349/