15 Star 90 Fork 25

konyshe/gogo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
UtilsGuard.go 1.19 KB
一键复制 编辑 原始数据 按行查看 历史
package gogo
import (
"os"
"os/exec"
"strconv"
"strings"
)
func service(handler func()) {
restart_delay := 0
var args []string
for i := 1; i < len(os.Args); i++ {
if strings.HasPrefix(os.Args[i], "--gogo-restart-delay") {
restart_delay, _ = strconv.Atoi(strings.Split(os.Args[i], "=")[1])
continue
}
args = append(args, os.Args[i])
}
if restart_delay > 0 {
for {
cmd := exec.Command(os.Args[0], args...)
cmd.Env = os.Environ()
//cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Start(); err != nil {
LogErrorF("failed to run command: %s\n", err)
}
if err := cmd.Wait(); err != nil {
LogErrorF("failed to wait command: %s\n", err)
}
TimeSleepMilliSecond(restart_delay)
}
}
handler()
}
func StartGuard(handler func()) {
daemon := false
var args []string
for i := 1; i < len(os.Args); i++ {
if os.Args[i] == "--gogo-background" {
daemon = true
continue
}
args = append(args, os.Args[i])
}
if daemon {
cmd := exec.Command(os.Args[0], args...)
cmd.Env = os.Environ()
if err := cmd.Start(); err != nil {
LogErrorF("failed to run command: %s\n", err)
}
return
}
service(handler)
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/konyshe/gogo.git
git@gitee.com:konyshe/gogo.git
konyshe
gogo
gogo
v2

搜索帮助