Skip to content

Instantly share code, notes, and snippets.

@matejb
Created May 20, 2017 12:21
Show Gist options
  • Save matejb/87064825093c42c1e76e7175665d9a9b to your computer and use it in GitHub Desktop.
Save matejb/87064825093c42c1e76e7175665d9a9b to your computer and use it in GitHub Desktop.
Golang context with cancellation on signal receive
func contextWithSigterm(ctx context.Context) context.Context {
ctxWithCancel, cancel := context.WithCancel(ctx)
go func() {
defer cancel()
signalCh := make(chan os.Signal, 1)
signal.Notify(signalCh, os.Interrupt, syscall.SIGTERM)
select {
case <-signalCh:
case <-ctx.Done():
}
}()
return ctxWithCancel
}
@henvic
Copy link

henvic commented Jul 6, 2024

@stokito, thank you for the feedback. I've updated it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment