internal/platform/process/init_windows.go (21 lines of code) (raw):

package process import ( "golang.org/x/sys/windows" "log" "unsafe" ) func KillProcessTreeOnClose() { job, err := windows.CreateJobObject(nil, nil) if err != nil { log.Fatal(err) } info := windows.JOBOBJECT_EXTENDED_LIMIT_INFORMATION{} info.BasicLimitInformation.LimitFlags = windows.JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE windows.SetInformationJobObject( job, windows.JobObjectExtendedLimitInformation, uintptr(unsafe.Pointer(&info)), uint32(unsafe.Sizeof(info)), ) windows.AssignProcessToJobObject(job, windows.CurrentProcess()) }