golang简单的守护进程实现
时间:2020-07-27 03:35:26 +0800 CST 浏览:671

一个简单的例子,用-d参数启动进程并将进程移至后台启动。在web服务中比较常用,可配合热重启相关的库使用。

package main

import (
    "log"
    "os"
    "os/exec"
    "time"
)

func main() {
    for i, v := range os.Args {
        if v == "-d" {
            os.Args[i] = "-d=true"
            command := exec.Command(os.Args[0], os.Args[1:]...)
            out, err := os.OpenFile("/dev/null", os.O_RDWR, 0)
            if err == nil {
                command.Stdout = out
                command.Stderr = out
            }
            // 传递环境变量,这个在一些需要依赖环境变量的场景有用
            command.Env = os.Environ()
            if err := command.Start(); err != nil {
                log.Fatalln(err)
            }
            return
        }
    }

    for {
        time.Sleep(1 * time.Second)
    }
}


如果这篇文章对你有所帮助,可以通过下边的“打赏”功能进行小额的打赏。

本网站部分内容来源于互联网,如有侵犯版权请来信告知,我们将立即处理。


来说两句吧