"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo comprobar datos en Stdin sin bloquear en Go?

¿Cómo comprobar datos en Stdin sin bloquear en Go?

Publicado el 2024-11-19
Navegar:137

How to Check for Data in Stdin without Blocking in Go?

Comprobación de datos en Stdin con Go

En Go, interactuar con la entrada estándar (stdin) suele ser una tarea crucial cuando se trabaja con comandos y canalizaciones. Sin embargo, determinar si stdin tiene datos sin bloquear la ejecución del programa puede ser un desafío.

El objeto de archivo os.Stdin representa stdin y posee capacidades similares a otros objetos de archivo en Go. Esto nos permite aprovechar la función Stat para recopilar información sobre la entrada estándar, incluido su tamaño.

Para determinar si la entrada estándar contiene datos, podemos verificar su tamaño usando el siguiente código:

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")
    }
}

Cuando este código se compila en un ejecutable, se puede utilizar como filtro para procesar la entrada canalizada a la entrada estándar. Por ejemplo, ejecutando el comando echo test | ./executable imprimiría "5 bytes disponibles en Stdin" en la consola, lo que indica que stdin contiene datos. Por el contrario, ejecutar ./executable sin ninguna entrada mostraría "Stdin está vacío".

Este enfoque permite a los desarrolladores verificar datos en stdin sin bloquear y continuar con la lógica de su programa en consecuencia. Es particularmente útil cuando se trabaja con canalizaciones o se manejan entradas del usuario desde la entrada estándar.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3