Files
openp2p/daemon.go
2021-11-24 22:40:07 +08:00

37 lines
827 B
Go

package main
import (
"os"
"time"
)
type daemon struct {
}
func (d *daemon) run() {
gLog.Println(LevelINFO, "daemon start")
defer gLog.Println(LevelINFO, "daemon end")
var args []string
// rm -d parameter
for i := 0; i < len(os.Args); i++ {
if os.Args[i] == "-d" {
args = append(os.Args[0:i], os.Args[i+1:]...)
break
}
}
args = append(args, "-bydaemon")
for {
// start worker
gLog.Println(LevelINFO, "start worker process")
execSpec := &os.ProcAttr{Files: []*os.File{os.Stdin, os.Stdout, os.Stderr}}
p, err := os.StartProcess(os.Args[0], args, execSpec)
if err != nil {
gLog.Printf(LevelERROR, "start worker error:%s", err)
return
}
_, _ = p.Wait()
gLog.Printf(LevelERROR, "worker stop, restart it after 10s")
time.Sleep(time.Second * 10)
}
}