signal: catch all termination signals by default
In this commit, we modify the primary `signal` package to instead catch all signals. Before this commit, it would only catch the interrupt signal sent from the kernel. With this new commit, we'll now also catch (or attempt to catch): `SIGABRT`, `SIGTERM`, `SIGSTOP`, and `SIGQUIT`.
This commit is contained in:
parent
ec70965c8a
commit
c731a99647
@ -8,6 +8,7 @@ package signal
|
|||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -26,7 +27,15 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
signal.Notify(interruptChannel, os.Interrupt)
|
signalsToCatch := []os.Signal{
|
||||||
|
os.Interrupt,
|
||||||
|
os.Kill,
|
||||||
|
syscall.SIGABRT,
|
||||||
|
syscall.SIGTERM,
|
||||||
|
syscall.SIGSTOP,
|
||||||
|
syscall.SIGQUIT,
|
||||||
|
}
|
||||||
|
signal.Notify(interruptChannel, signalsToCatch...)
|
||||||
go mainInterruptHandler()
|
go mainInterruptHandler()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,8 +69,8 @@ func mainInterruptHandler() {
|
|||||||
|
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-interruptChannel:
|
case signal := <-interruptChannel:
|
||||||
log.Infof("Received SIGINT (Ctrl+C).")
|
log.Infof("Received %v", signal)
|
||||||
shutdown()
|
shutdown()
|
||||||
|
|
||||||
case <-shutdownRequestChannel:
|
case <-shutdownRequestChannel:
|
||||||
|
Loading…
Reference in New Issue
Block a user