1package daemon
2
3import (
4 "log"
5 "os"
6 "os/signal"
7 "syscall"
8)
9
10// handleSignals listens for OS signals and triggers daemon actions.
11// SIGTERM/SIGINT → graceful shutdown
12// SIGHUP → config reload
13func (d *Daemon) handleSignals() {
14 ch := make(chan os.Signal, 1)
15 signal.Notify(ch, syscall.SIGTERM, syscall.SIGINT, syscall.SIGHUP)
16
17 for {
18 select {
19 case sig := <-ch:
20 switch sig {
21 case syscall.SIGTERM, syscall.SIGINT:
22 log.Println("daemon: received shutdown signal")
23 d.Shutdown()
24 return
25 case syscall.SIGHUP:
26 log.Println("daemon: received SIGHUP, reloading config")
27 if err := d.ReloadConfig(); err != nil {
28 log.Printf("daemon: config reload failed: %v", err)
29 }
30 }
31 case <-d.shutdown:
32 return
33 }
34 }
35}