GOLANG Windows服务 貌似有问题

hellsam · · 829 次点击
我这样写是可以的 ```go package main import ( "flag" "log" "os" "github.com/kardianos/service" ) type program struct { service service.Service } func (p *program) Start(s service.Service) error { p.service = s go p.run() return nil } func (p *program) run() { defer func() { if service.Interactive() { p.Stop(p.service) } else { p.service.Stop() } }() // to do ... } func (p *program) Stop(s service.Service) error { if service.Interactive() { os.Exit(0) } return nil } func main() { flag.Parse() svcConfig := &service.Config{ Name: "***", //服务显示名称 DisplayName: "***", //服务名称 Description: "***", //服务描述 } prg := &program{} s, err := service.New(prg, svcConfig) if err != nil { log.Fatalln(err) } if len(os.Args) > 1 { if flag.Arg(0) == "install" { err := s.Install() if err != nil { log.Println("服务安装失败") return } log.Println("服务安装成功") return } if flag.Arg(0) == "uninstall" { err := s.Uninstall() if err != nil { log.Println("服务卸载失败") return } log.Println("服务卸载成功") return } } err = s.Run() if err != nil { log.Println(err) } } ```
#3
更多评论
``` func (p *program) Start(s service.Service) error { go p.run() return nil } 改成 func (p *program) Start(s service.Service) error { p.service = s go p.run() return nil } ```
#1
<a href="/user/victorl" title="@victorl">@victorl</a> 问下 p.service 没有这个service函数啊
#2