Add pidfile support

Copy a simple implementation from the Moby project, since importing
their package would pull in too many dependencies.

Fixes #320
This commit is contained in:
Cameron Moore 2019-12-25 15:41:48 -06:00
parent 569921cd72
commit 876c853073
35 changed files with 7198 additions and 2 deletions

View file

@ -15,6 +15,8 @@ func setupSignals() {
signals = make(chan os.Signal, 1)
signal.Notify(signals, syscall.SIGUSR1)
signal.Notify(signals, syscall.SIGHUP)
signal.Notify(signals, syscall.SIGTERM)
signal.Notify(signals, os.Interrupt)
go watchForSignals()
}
@ -27,12 +29,22 @@ func watchForSignals() {
switch sig {
case syscall.SIGUSR1:
log.Println("caught USR1 signal")
reloadAllHooks()
case syscall.SIGHUP:
log.Println("caught HUP signal")
reloadAllHooks()
case os.Interrupt, syscall.SIGTERM:
log.Printf("caught %s signal; exiting\n", sig)
if pidFile != nil {
err := pidFile.Remove()
if err != nil {
log.Print(err)
}
}
os.Exit(0)
default:
log.Printf("caught unhandled signal %+v\n", sig)
}