前言
在windows操作系统上是没有守护进程的说法,golang原生不支持注册成windows服务,如果想要实现windows服务,就需要借助第三方库 github.com/kardianos/service 这里以 gin 框架做为 web项目,实现windows服务的效果。(这里记录一下)
一、代码如下
1.代码示例
package main
import (
"context"
"fmt"
"github.com/gin-gonic/gin"
"github.com/kardianos/service"
"io"
"log"
"net/http"
"os"
"path/filepath"
)
type Services struct {
Log service.Logger
Srv *http.Server
Cfg *service.Config
}
// 获取可执行文件的绝对路径
func ExecPath() string {
file, e := os.Executable()
if e != nil {
log.Printf("Executable file path error : %s\n", e.Error())
}
path := filepath.Dir(file)
return path
}
// 获取 service 对象
func getSrv() service.Service {
File, err := os.Create(ExecPath() + "/http-server.log")
if err != nil {
File = os.Stdout
}
defer File.Close(