Skip to content

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

daemon

Daemon initialization routines (process, log, pidfile, signal handling)

import (
	"github.com/aavzz/daemon/fork"
	"github.com/aavzz/daemon/log"
	"github.com/aavzz/daemon/pid"
	"github.com/aavzz/daemon/signal"
}
     
//Initialize logging to syslog with a relevant tag
//The process exits if local syslog is not running
log.InitSyslog("tag")

//Daemonize process if needed
fork.Daemonize()

//After daemonize() this part runs in child only

//Check for double invocation and write pidfile
pid.Write("/path/to/pidfile")

//Set all signals to be ignored
signal.Ignore()

//Setup SIGHUP to re-read configuration
signal.Hup(func() {
	log.Info("SIGHUP received, re-reading configuration file")
	if err := viper.ReadInConfig(); err != nil {
		pid.Remove()
		log.Fatal(err.Error())
	}
})

//Setup SIGTERM to remove pidfile and exit immidiately
signal.Term(func() {
	log.Info("SIGTERM received, exitting")
	pid.Remove()
	os.Exit(0)
})

//signal.Quit is set up to terminate the process gracefully
//in approppriate place (where required objects are available).


//further initialization and an event loop

About

Daemon initialization routines (process, log, pidfile, signal handling)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages