Detectando comandos canalizados no Go
Ao executar comandos no Go, pode haver casos em que seja necessário determinar se o comando está sendo canalizado . Comandos canalizados são úteis para processar dados de outro comando ou fonte diretamente por meio de fluxos de entrada/saída padrão.
Detectando comandos canalizados com os.Stdin.Stat()
Para detectar se um comando é canalizado, pode-se usar o método os.Stdin.Stat() para examinar o modo do fluxo de entrada padrão. O método Stat() retorna uma estrutura os.FileInfo contendo diversas informações sobre o arquivo, incluindo seu modo.
Exemplo:
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")
}
}
Neste exemplo, a constante os.ModeCharDevice é usada para verificar se o modo da entrada padrão é um dispositivo de caractere. Caso contrário, pode-se inferir que os dados vêm de um canal. Por outro lado, se o modo for um dispositivo de caractere, os dados virão de um terminal.
Como funciona:
Quando um comando é canalizado, a entrada padrão stream está conectado ao fluxo de saída de outro comando. Isso altera o modo do fluxo de entrada padrão para um modo pipe em vez de um modo de dispositivo de caractere. Examinando o modo do fluxo de entrada padrão, podemos determinar se o comando é canalizado.
Aplicativos:
A detecção de comandos canalizados pode ser útil em vários cenários, como como:
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