Determine if Stdin has data with Go
Is there a way to check if the input stream ( os.Stdin ) has data? The post Read from initial stdin in GO? shows how to read the data, but unfortunately blocks if no data is piped into the stdin. os.Stdin is like any other "file", so you can check it's size: package main import ( "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") } } I built this as a "pipe" executable, here is how it works: $ ./pipe Stdin is