5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-02 22:49:31 +08:00
wails/v2/internal/signal/signal.go
Lea Anthony 0531645377
Better signal handling (#1488)
* Better signal handling

* Remove waitgroup
2022-06-25 09:26:17 +10:00

40 lines
686 B
Go

package signal
import (
"os"
gosignal "os/signal"
"sync"
"syscall"
)
var signalChannel = make(chan os.Signal, 2)
var callbacks []func()
var lock sync.Mutex
func OnShutdown(callback func()) {
lock.Lock()
defer lock.Unlock()
callbacks = append(callbacks, callback)
}
// Start the Signal Manager
func Start() {
// Hook into interrupts
gosignal.Notify(signalChannel, os.Interrupt, syscall.SIGTERM, syscall.SIGINT)
// Spin off signal listener and wait for either a cancellation
// or signal
go func() {
select {
case <-signalChannel:
println("")
println("Ctrl+C detected. Shutting down...")
for _, callback := range callbacks {
callback()
}
}
}()
}