doumi2106 2016-02-24 14:44 采纳率: 100%
浏览 1420
已采纳

无法将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 2016-02-24 16:33
    关注

    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)
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀