gpt4 book ai didi

go - 等到满足条件或超时

转载 作者:IT王子 更新时间:2023-10-29 01:49:10 26 4
gpt4 key购买 nike

我正在尝试编写一个函数,该函数在满足条件时中断,在这种情况下,命令的输出等于某物(本例中为 hello)或超时了

timeout := 10 sec

func run() error {

for {

out , _ := exec.Command("echo", "hello").Output()
if string(out) == "hello" || timeout {
break
}
}

}

我看到人们使用 select 但我不知道如何在这里使用它,有什么提示吗?

最佳答案

如果命令运行得很快,那么这个简单的方法可能会:

deadline := time.Now().Add(10 * time.Second)
for {
out, _ := exec.Command("echo", "hello").Output()
if string(out) == "hello" || time.Now().After(deadline) {
break
}
}

改进是使用 context with a timeout :

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
for {
out, _ := exec.CommandContext(ctx, "echo", "hello").Output()
if string(out) == "hello" || ctx.Err() != nil {
break
}
}

上下文版本会在超时时终止命令。代码循环直到找到字符串或the context is done。 .

关于go - 等到满足条件或超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51338620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com