我将运行一个将输出推送到文件系统中的 FIFO 文件的命令。
在 bash 中,我可以写timeout 3000 cat server_fifo>server.url等到 fifo 被推送一个输出,或者它达到 3000 超时。
我想知道我们如何在 golang 中做到这一点,即一直等待 fifo 文件的输出,并为此等待设置超时。
根据 matishsiao 的 gist 脚本,我知道我们可以做到
file, err := os.OpenFile(urlFileName, os.O_CREATE, os.ModeNamedPipe)
if err != nil {
log.Fatal("Open named pipe file error:", err)
}
reader := bufio.NewReader(file)
for {
_, err := reader.ReadBytes('\n')
if err == nil {
fmt.Println("cockroach server started")
break
}
}
但是在这种情况下,如何在 for 循环中添加超时?
慕容3067478
相关分类