waveterm/pkg/util/sigutil/sigutil.go

27 lines
568 B
Go

// Copyright 2025, Command Line Inc.
// SPDX-License-Identifier: Apache-2.0
package sigutil
import (
"fmt"
"os"
"os/signal"
"syscall"
"github.com/wavetermdev/waveterm/pkg/panichandler"
)
func InstallShutdownSignalHandlers(doShutdown func(string)) {
sigCh := make(chan os.Signal, 1)
signal.Notify(sigCh, syscall.SIGHUP, syscall.SIGTERM, syscall.SIGINT)
go func() {
defer func() {
panichandler.PanicHandler("InstallShutdownSignalHandlers", recover())
}()
for sig := range sigCh {
doShutdown(fmt.Sprintf("got signal %v", sig))
break
}
}()
}