我在 Go (golang) 中有一些代码,有几个不同的线程运行一个单独的可执行文件。我想确保如果用户在 Go 中终止我的进程,我有办法终止我调用的可执行文件,有没有办法做到这一点?
最佳答案
确保子进程被杀死的唯一方法是在同一个进程组中启动它,并将进程组作为一个整体杀死,或者在syscall.SetProcAddr
中设置Pdeadthsig
。 .
您可以为 SIG_INT
和 SIG_TERM
等常见信号设置信号处理程序,并在退出前终止您的子进程,但由于您无法捕获 SIG_KILL
这通常是不值得的。
参见:Panic in other goroutine not stopping child process
cmd := exec.Command("./long-process")
cmd.SysProcAttr = &syscall.SysProcAttr{
Pdeathsig: syscall.SIGTERM,
}
关于go - 确保 Go Process 中调用的可执行文件在 Process 被杀死时被杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34730941/