From f3b8216b83dbb85803043e76d66e68c59afc9b04 Mon Sep 17 00:00:00 2001 From: Mmx <1624045573@qq.com> Date: Sat, 17 Jul 2021 16:18:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=94=AF=E6=8C=81=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E9=80=80=E5=87=BA=E5=A4=9A=E4=BD=99=E5=AE=88=E6=8A=A4=E8=BF=9B?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/daemon.go | 25 +++++++++++++++++++++++++ controllers/guardian.go | 9 +++++++++ 2 files changed, 34 insertions(+) diff --git a/controllers/daemon.go b/controllers/daemon.go index 5485ae0..101edfa 100644 --- a/controllers/daemon.go +++ b/controllers/daemon.go @@ -1,9 +1,22 @@ package controllers import ( + "autoLogin/util" "flag" + "fmt" + "time" ) +type daemon struct { + Mark string + Path string +} + +var Daemon = daemon{ + Mark: fmt.Sprint(time.Now().UnixNano()), + Path: "autoLoginDaemon", +} + func init() { goDaemon := flag.Bool("daemon", false, "") flag.Parse() @@ -11,3 +24,15 @@ func init() { Guardian(false) } } + +func (a *daemon) MarkDaemon() error { + return util.File.Write(a.Path, []byte(a.Mark)) +} + +func (a *daemon) CheckDaemon() bool { + if data, err := util.File.Read(a.Path); err != nil { + return true + } else { + return string(data) == a.Mark + } +} diff --git a/controllers/guardian.go b/controllers/guardian.go index 7a5ed7b..9f7a275 100644 --- a/controllers/guardian.go +++ b/controllers/guardian.go @@ -9,8 +9,17 @@ import ( ) func Guardian(output bool) { + global.Status.Output = output + + if e := Daemon.MarkDaemon(); e != nil { + util.Log.Fatalln(e) + } + var c = make(chan bool) for { + if !Daemon.CheckDaemon() { + os.Exit(1) + } global.Status.Output = output time.Sleep(time.Duration(global.Config.Settings.Guardian) * time.Second) go func() {