需要做一个服务在后台运行,又不想使用第三方进程管理工具,在网上找到一段代码,试了一下可以后台运行,不明白原理
package main
import (
"log"
"os"
"os/exec"
"strconv"
"time"
)
func main() {
args := os.Args
daemon := false
for k, v := range args {
if v == "-d" {
daemon = true
args[k] = ""
}
}
if daemon {
Daemonize(args...)
return
}
file, err := os.OpenFile("test.txt", os.O_CREATE|os.O_RDWR, 0664)
if err != nil {
log.Println(err)
return
}
defer file.Close()
for {
file.Write([]byte(strconv.Itoa((int)(time.Now().Unix())) + "\n"))
time.Sleep(time.Second * 1)
}
}
func Daemonize(args ...string) {
var arg []string
if len(args) > 1 {
arg = args[1:]
}
cmd := exec.Command(args[0], arg...)
cmd.Env = os.Environ()
cmd.Start()
}
后台运行 ./mian -d
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.