func CatchInterrupt() {
	CatchSignal(func(_ os.Signal) {}, os.Interrupt)
}
/*
CatchInterrupt is a wrapper around CatchSignal that makes it easy to safely handle receiving interrupt signals. If an interrupt is received, the process will wipe sensitive data in memory before terminating.

A subsequent call to CatchSignal will override this call.
package memguard
import (
	"os"
	"os/signal"
	"sync"
	"github.com/awnumar/memguard/core"
)
var (
	create sync.Once
	sigfunc = make(chan func(os.Signal), 1)
	listener = make(chan os.Signal, 4)
)
func CatchSignal(f func(os.Signal), signals ...os.Signal) {
	create.Do(func() {
		go func() {
			var handler func(os.Signal)
			for {
				select {
				case signal := <-listener:
					handler(signal)
					core.Exit(1)
				case handler = <-sigfunc:
				}
			}
		}()
	})
	sigfunc <- f
	signal.Reset()
	signal.Notify(listener, signals...)
}