go中如何保证应用运行是单例的

Amosss · · 1783 次点击
xmge
欲戴王冠 必承其重
```go package prepare import "syscall" const ( lf = "singleton.lock" ) func singleton() { if fd, err := syscall.Open(lf, syscall.O_CREAT|syscall.O_RDONLY, 0644); err != nil { panic(err) } else if err := syscall.Flock(fd, syscall.LOCK_EX|syscall.LOCK_NB); err != nil { panic(err) } return } ```
#9
更多评论
其实解决这个办法就算不用框架也可以做到, 只是稍微消耗一点性能. 最简单的办法就是创建一个文件作为flag
#1
不知道这个库有没有这个功能 https://github.com/kardianos/service
#2