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:
Olaoluwa Osuntokun committed 2019-03-27 12:56:45 -07:00
1 parent ec70965c8a
commit c731a99647
1 file changed
+12 -3
+12 -3
View File
@@ -8,6 +8,7 @@ package signal
import (
"os"
"os/signal"
"syscall"
)
var (
@@ -26,7 +27,15 @@ var (
)
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()
}
@@ -60,8 +69,8 @@ func mainInterruptHandler() {
for {
select {
case <-interruptChannel:
log.Infof("Received SIGINT (Ctrl+C).")
case signal := <-interruptChannel:
log.Infof("Received %v", signal)
shutdown()
case <-shutdownRequestChannel: