Files
kubeshark/utils/wait.go
2022-11-26 21:34:45 +03:00

26 lines
522 B
Go

package utils
import (
"context"
"log"
"os"
"os/signal"
"syscall"
)
func WaitForFinish(ctx context.Context, cancel context.CancelFunc) {
log.Printf("waiting for finish...")
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT)
// block until ctx cancel is called or termination signal is received
select {
case <-ctx.Done():
log.Printf("ctx done")
break
case <-sigChan:
log.Printf("Got termination signal, canceling execution...")
cancel()
}
}