Determinando a entrada canalizada em Go
Entender se um comando é canalizado é crucial em aplicativos Go, especialmente ao processar dados de várias fontes. Este artigo explora como determinar se um comando é canalizado ou não, permitindo que os desenvolvedores adaptem seu código de acordo.
Solução
Go fornece o os.Stdin.Stat( ) função para recuperar as informações do arquivo associadas à entrada padrão. Essas informações incluem o modo de arquivo, que indica se a entrada é de um terminal ou de um pipe. O trecho de código a seguir demonstra como usar os.Stdin.Stat() para essa finalidade:
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")
}
}
Quando o comando é canalizado, fi.Mode() & os.ModeCharDevice é avaliado como 0, indicando que a entrada não é de um dispositivo de caractere (como um terminal). Por outro lado, um valor diferente de zero significa que a entrada é de um dispositivo de caractere.
Essa abordagem fornece uma maneira confiável de distinguir entre entradas canalizadas e não canalizadas, permitindo que os desenvolvedores adaptem o comportamento de seus aplicativos de acordo.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3