diff --git a/main.go b/main.go index 57bf9ec..7218efb 100644 --- a/main.go +++ b/main.go @@ -11,18 +11,39 @@ import ( "github.com/taoshihan1991/imaptool/middleware" "github.com/taoshihan1991/imaptool/tmpl" "log" + "os" + "os/exec" + "path/filepath" ) var ( port string + daemon bool GoflyConfig config.Config ) -func main() { +func init(){ //获取参数中的数据 flag.StringVar(&port, "port", "8080", "监听端口号") + flag.BoolVar(&daemon, "d", false, "是否为守护进程模式") flag.Parse() if flag.NFlag() < 1 { flag.PrintDefaults() } + if daemon==true{ + if os.Getppid() != 1{ + // 将命令行参数中执行文件路径转换成可用路径 + filePath, _ := filepath.Abs(os.Args[0]) + cmd := exec.Command(filePath, os.Args[1:]...) + // 将其他命令传入生成出的进程 + cmd.Stdin = os.Stdin // 给新进程设置文件描述符,可以重定向到文件中 + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + cmd.Start() // 开始执行新进程,不等待新进程退出 + os.Exit(0) + } + } +} +func main() { + baseServer := "0.0.0.0:"+port log.Println("start server...\r\ngo:http://" + baseServer) engine := gin.Default()