doumi2106
doumi2106
采纳率100%
2016-02-24 14:44

无法将Golang应用程序exe作为Windows服务启动

已采纳

我有一个以golang为后端的应用程序。 我可以使用sc和nssm创建服务,如下所示: sc create TestService binpath=C:\User\sds\Desktop\test.exe nssm install TestService C:\User\sds\Desktop\test.exe

服务创建成功,但是无法启动。 启动服务时,它会给出启动超时错误。 我需要从Windows服务启动应用程序。 先提前感谢帮助!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • dongmou1964 dongmou1964 5年前

    Go has a library for creating services in windows. Please check this library github.com/kardianos/service.

    package main
    
    import (
        "log"
    
        "github.com/kardianos/service"
    )
    
    var logger service.Logger
    
    type program struct{}
    
    func (p *program) Start(s service.Service) error {
        // Start should not block. Do the actual work async.
        go p.run()
        return nil
    }
    func (p *program) run() {
        // Do work here
    }
    func (p *program) Stop(s service.Service) error {
        // Stop should not block. Return with a few seconds.
        return nil
    }
    
    func main() {
        svcConfig := &service.Config{
            Name:        "GoServiceExampleSimple",
            DisplayName: "Go Service Example",
            Description: "This is an example Go service.",
        }
    
        prg := &program{}
        s, err := service.New(prg, svcConfig)
        if err != nil {
            log.Fatal(err)
        }
        logger, err = s.Logger(nil)
        if err != nil {
            log.Fatal(err)
        }
        err = s.Run()
        if err != nil {
            logger.Error(err)
        }
    }
    
    点赞 评论 复制链接分享

相关推荐