我有一些代码在Go(golang)中,有一些不同的线程运行一个单独的可执行文件.我想确保如果用户在Go中杀死我的进程,我有办法杀死我调用的可执行文件,有没有办法做到这一点?
Jim*_*imB 13
确保子进程被终止的唯一方法是在同一进程组中启动它,并将整个进程组终止,或者设置Pdeadthsig在进程组中syscall.SetProcAddr.
您可以为常见信号设置信号处理程序,例如SIG_INT和SIG_TERM,并在退出之前终止您的子进程,但由于您无法捕获SIG_KILL,因此通常不值得努力.
cmd := exec.Command("./long-process")
cmd.SysProcAttr = &syscall.SysProcAttr{
Pdeathsig: syscall.SIGTERM,
}
Run Code Online (Sandbox Code Playgroud)