blob: b47ce724c8daf050a980e2d32bf8ea1b51879419 [file] [log] [blame]
// +build !windows
package exec
import (
"context"
"syscall"
)
// NoInterruptContext returns a context.Context instance which launches
// subprocesses in a difference process group so that they are not killed when
// this process is killed.
//
// On Windows, this function just returns withoutCancel(ctx).
func NoInterruptContext(ctx context.Context) context.Context {
parent := getCtx(ctx)
runFn := func(ctx context.Context, c *Command) error {
c.SysProcAttr = &syscall.SysProcAttr{
Setpgid: true,
}
return parent.runFn(ctx, c)
}
return NewContext(withoutCancel(ctx), runFn)
}