func (info *Info) serviceMain() error { if forkFlag.Value() { isParent, err := daemon.Fork() if err != nil { return err } if isParent { os.Exit(0) } daemonizeFlag.SetValue(true) } err := daemon.Init() if err != nil { return err } err = systemdUpdateStatus("\n") if err == nil { info.systemd = true } // default: daemon=no, stderr=yes // --daemon: daemon=yes, stderr=no // systemd/--daemon --stderr: daemon=yes, stderr=yes // systemd --daemon: daemon=yes, stderr=no daemonize := daemonizeFlag.Value() keepStderr := stderrFlag.Value() if !daemonize && info.systemd { daemonize = true keepStderr = true } if daemonize { err := daemon.Daemonize(keepStderr) if err != nil { return err } } if pidfileFlag.Value() != "" { info.pidFileName = pidfileFlag.Value() err = info.openPIDFile() if err != nil { return err } defer info.closePIDFile() } return info.runInteractively() }
func (info *Info) serviceMain() error { if forkFlag.Value() { isParent, err := daemon.Fork() if err != nil { return err } if isParent { os.Exit(0) } daemonizeFlag.SetValue(true) } err := daemon.Init() if err != nil { return err } err = systemdUpdateStatus("\n") if err == nil { info.systemd = true } if daemonizeFlag.Value() || info.systemd { err := daemon.Daemonize() if err != nil { return err } } if pidfileFlag.Value() != "" { info.pidFileName = pidfileFlag.Value() err = info.openPIDFile() if err != nil { return err } defer info.closePIDFile() } return info.runInteractively() }