我有一个这样的函数:
func run (cmd string) [] byte {
out,err = exec.Command(cmd).Output()
if error!=nil {
log.Fatal (err)
}
return out
}
我想以这种方式运行这个命令
run ("uptime") // run every 5 secs
run ("date") // run every 10 secs
我想运行这些命令并收集其输出并用它做一些事情。我将如何在 go 中做到这一点?
Use a time.Ticker https://golang.org/pkg/time/#Ticker。构建程序的方法有很多,但您可以从简单的 for 循环开始:
uptimeTicker := time.NewTicker(5 * time.Second)
dateTicker := time.NewTicker(10 * time.Second)
for {
select {
case <-uptimeTicker.C:
run("uptime")
case <-dateTicker.C:
run("date")
}
}
然后,如果命令可能需要比最短间隔更长的时间,您可能希望在 Goroutine 中运行这些命令,以避免 for 循环中的积压。或者,每个 goroutine 可以有自己的 for 循环和一个 Ticker。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)