diff --git a/runtime/halt/callbacks.go b/runtime/halt/callbacks.go new file mode 100644 index 0000000..261c05e --- /dev/null +++ b/runtime/halt/callbacks.go @@ -0,0 +1,22 @@ +package halt + +import ( + "os" + "os/signal" +) + +type Callback func(sig os.Signal) + +func On(f Callback, sigs ...os.Signal) { + c := make(chan os.Signal, 1) + for _, sig := range sigs { + signal.Notify(c, sig) + } + go watch(f, c) +} + +func watch(f Callback, c <-chan os.Signal) { + for sig := range c { + f(sig) + } +}