31 lines
706 B
Go
31 lines
706 B
Go
package main
|
||
|
||
import (
|
||
"fmt"
|
||
"os"
|
||
|
||
"git.apinb.com/quant/collector/internal/impl"
|
||
"git.apinb.com/quant/collector/internal/logic"
|
||
"github.com/marcsauter/single"
|
||
)
|
||
|
||
func main() {
|
||
// 互斥体名称,Global\CollectorSingleInstance 确保会话全局唯一
|
||
s := single.New("CollectorSingleInstance")
|
||
|
||
// 尝试加锁,如果已有实例运行会返回错误
|
||
if err := s.CheckLock(); err != nil {
|
||
if err == single.ErrAlreadyRunning {
|
||
fmt.Println("collector.exe 已有实例正在运行,本次启动退出。")
|
||
os.Exit(0)
|
||
}
|
||
fmt.Fprintf(os.Stderr, "检查单实例失败: %v\n", err)
|
||
os.Exit(1)
|
||
}
|
||
// 进程退出时自动释放锁
|
||
defer s.TryUnlock()
|
||
|
||
impl.NewImpl()
|
||
logic.Boot()
|
||
}
|