使用 Go 确定 Stdin 是否有数据

有没有办法检查输入流(os.Stdin)是否有数据?

从 GO 中的初始标准输入读取的帖子?显示如何读取数据,但不幸的是,如果没有数据通过管道输入标准输入,则会阻塞。


守着星空守着你
浏览 218回答 2
2回答

长风秋雁

os.Stdin 就像任何其他“文件”一样,因此您可以检查它的大小:package mainimport (    "fmt"    "os")func main() {    file := os.Stdin    fi, err := file.Stat()    if err != nil {        fmt.Println("file.Stat()", err)    }    size := fi.Size()    if size > 0 {        fmt.Printf("%v bytes available in Stdin\n", size)    } else {        fmt.Println("Stdin is empty")    }}我将它构建为“管道”可执行文件,这是它的工作原理:$ ./pipeStdin is empty$ echo test | ./pipe5 bytes available in Stdin
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go