一个简单的例子,用-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)
}
}
如果这篇文章对你有所帮助,可以通过下边的“打赏”功能进行小额的打赏。
本网站部分内容来源于互联网,如有侵犯版权请来信告知,我们将立即处理。