feat: 尝试改用文件监听实现daemon

This commit is contained in:
Mmx
2021-11-25 08:16:07 +08:00
parent 1509e5f848
commit 71d9905db9
4 changed files with 32 additions and 11 deletions

View File

@@ -4,6 +4,8 @@ import (
"fmt"
"github.com/Mmx233/BitSrunLoginGo/global"
"github.com/Mmx233/tool"
"github.com/howeyc/fsnotify"
"os"
"time"
)
@@ -29,8 +31,32 @@ func (a *daemon) MarkDaemon() error {
func (a *daemon) CheckDaemon() bool {
if data, err := tool.File.Read(a.Path); err != nil {
return true
return false
} else {
return string(data) == a.Mark
}
}
func (a *daemon) DaemonChan() bool {
f, err := fsnotify.NewWatcher()
if err != nil {
panic(err)
}
err = f.Watch(Daemon.Path)
if err != nil {
panic(err)
}
for {
select {
case event := <-f.Event:
if event.IsModify() && !a.CheckDaemon() {
continue
}
os.Exit(0)
case e := <-f.Error:
panic(e)
}
}
}

View File

@@ -11,15 +11,14 @@ import (
func Guardian(output bool) {
global.Status.Output = output
go Daemon.DaemonChan()
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
go func() {
defer func() {

1
go.mod
View File

@@ -7,5 +7,6 @@ require (
github.com/Mmx233/tool v0.3.5
github.com/PuerkitoBio/goquery v1.8.0 // indirect
github.com/andybalholm/cascadia v1.3.1 // indirect
github.com/howeyc/fsnotify v0.9.0
golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9 // indirect
)

9
go.sum
View File

@@ -2,18 +2,13 @@ github.com/Mmx233/config v0.0.3 h1:E744hob5fWD5P7m7q+91Z41R+Y1LDkxIhQXIeV1tel0=
github.com/Mmx233/config v0.0.3/go.mod h1:3mt+LSHUvD/C6tq1ge/Dmp8xKivFmo7gxSihCPjIAi0=
github.com/Mmx233/tool v0.3.5 h1:tZkJKngHhzzPKWENgCdIAWIMW/31qKMy8yXRLAALxPE=
github.com/Mmx233/tool v0.3.5/go.mod h1:un5MCoI21lH40fFI5S9++aja8nJb+2sjATak7PnGMZ0=
github.com/PuerkitoBio/goquery v1.7.1 h1:oE+T06D+1T7LNrn91B4aERsRIeCLJ/oPSa6xB9FPnz4=
github.com/PuerkitoBio/goquery v1.7.1/go.mod h1:XY0pP4kfraEmmV1O7Uf6XyjoslwsneBbgeDjLYuN8xY=
github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U=
github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI=
github.com/andybalholm/cascadia v1.2.0/go.mod h1:YCyR8vOZT9aZ1CHEd8ap0gMVm2aFgxBp0T0eFw1RUQY=
github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c=
github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
github.com/howeyc/fsnotify v0.9.0 h1:0gtV5JmOKH4A8SsFxG2BczSeXWWPvcMT0euZt5gDAxY=
github.com/howeyc/fsnotify v0.9.0/go.mod h1:41HzSPxBGeFRQKEEwgh49TRw/nKBsYZ2cF1OzPjSJsA=
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210924151903-3ad01bbaa167 h1:eDd+TJqbgfXruGQ5sJRU7tEtp/58OAx4+Ayjxg4SM+4=
golang.org/x/net v0.0.0-20210924151903-3ad01bbaa167/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9 h1:0qxwC5n+ttVOINCBeRHO0nq9X7uy8SDsPoi5OaCdIEI=
golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=