| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- package daemon
- import (
- "errors"
- "os"
- )
- var errNotSupported = errors.New("daemon: Non-POSIX OS is not supported")
- // Mark of daemon process - system environment variable _GO_DAEMON=1
- const (
- MARK_NAME = "_GO_DAEMON"
- MARK_VALUE = "1"
- )
- // Default file permissions for log and pid files.
- const FILE_PERM = os.FileMode(0640)
- // WasReborn returns true in child process (daemon) and false in parent process.
- func WasReborn() bool {
- return os.Getenv(MARK_NAME) == MARK_VALUE
- }
- // Reborn runs second copy of current process in the given context.
- // function executes separate parts of code in child process and parent process
- // and provides demonization of child process. It look similar as the
- // fork-daemonization, but goroutine-safe.
- // In success returns *os.Process in parent process and nil in child process.
- // Otherwise returns error.
- func (d *Context) Reborn() (child *os.Process, err error) {
- return d.reborn()
- }
- // Search searches daemons process by given in context pid file name.
- // If success returns pointer on daemons os.Process structure,
- // else returns error. Returns nil if filename is empty.
- func (d *Context) Search() (daemon *os.Process, err error) {
- return d.search()
- }
- // Release provides correct pid-file release in daemon.
- func (d *Context) Release() (err error) {
- return d.release()
- }
|