Detect if a command is piped or not
go, pipe
Solution
Use `os.Stdin.Stat()`.
package main
import (
"fmt"
"os"
)
func main() {
fi, _ := os.Stdin.Stat()
if (fi.Mode() & os.ModeCharDevice) == 0 {
fmt.Println("data is from pipe")
} else {
fmt.Println("data is from terminal")
}
}
(Adapted from this tutorial)
Problem
Is there a way to detect if a command in go is piped or not? Example: ``` cat test.txt | mygocommand #Piped, this is how it should be used mygocommand # Not piped, this should be blocked ``` I'm reading from the Stdin `reader := bufio.NewReader(os.Stdin)`.