E/S de Terminal

El módulo io lee de la entrada estándar y escribe en la salida estándar y la salida de error estándar en aplicaciones de terminal.

Esta es una referencia de API. Sus fragmentos son llamadas aisladas; un proceso de terminal debe propagar los errores Lua estructurados devueltos cuando el resultado afecte al flujo de control.

Este módulo solo está disponible para procesos ejecutados en un host de terminal, no para funciones regulares.

Carga

local io = require("io")

Escribir a Stdout

Escribir strings a stdout sin nueva linea:

local ok, err = io.write("text", "more")
Parámetro Tipo Descripción
... any Número variable de valores a escribir (convertidos a string)

Devuelve: boolean, error

Escribir valores a stdout con tabs entre ellos y nueva linea al final:

io.print("value1", "value2", 123)
Parámetro Tipo Descripción
... any Número variable de valores a imprimir

Devuelve: boolean, error

Cuando la búsqueda del contexto de terminal tiene éxito, los errores de escritura se ignoran y la función devuelve true. Si falta el contexto de terminal, devuelve nil, "no terminal context".

Escribir a Stderr

Escribir valores a stderr con tabs entre ellos y nueva linea al final:

io.eprint("Error:", message)
Parámetro Tipo Descripción
... any Número variable de valores a imprimir

Devuelve: boolean, error

Cuando la búsqueda del contexto de terminal tiene éxito, los errores de escritura se ignoran y la función devuelve true. Si falta el contexto de terminal, devuelve nil, "no terminal context".

Leer Bytes

Leer hasta n bytes desde stdin:

local data, err = io.read(1024)
Parámetro Tipo Descripción
n integer Número de bytes a leer (predeterminado: 1024, valores <= 0 se convierten en 1024)

Devuelve: string, error. Una lectura correcta puede devolver menos de n bytes o una cadena vacía.

Leer una Linea

Leer una linea desde stdin hasta nueva linea:

local line, err = io.readline()

Devuelve: string, error. Se eliminan los caracteres finales \n y \r. Un EOF después de una entrada parcial devuelve esa línea parcial; un EOF sin entrada devuelve nil y un error estructurado.

Modo Raw

Activa o desactiva el modo raw del terminal (deshabilita el buffering por líneas y el eco):

local ok, err = io.raw(true)   -- enable
local ok, err = io.raw(false)  -- disable
Parámetro Tipo Descripción
enable boolean true para activar, false para desactivar (por defecto: true)

Devuelve: boolean, error. La llamada es un no-op correcto cuando la salida estándar no implementa Sync().

El modo raw usa conteo de referencias — cada io.raw(true) debe emparejarse con un io.raw(false). El terminal se restablece automáticamente al modo normal al salir el proceso.

Vaciar Salida

Vaciar buffer de stdout:

local ok, err = io.flush()

Devuelve: boolean, error

Argumentos de Linea de Comandos

Obtener argumentos de linea de comandos:

local args = io.args()

Devuelve: string[]

io.args() nunca falla. Devuelve una tabla vacía cuando no hay contexto de terminal disponible.

Errores

Este módulo devuelve errores Lua estructurados. La ausencia de contexto de terminal usa errors.UNAVAILABLE; los fallos directos de write/flush y de respuesta yield no válida usan errors.INTERNAL. Los fallos de read, readline y raw mode respaldados por el dispatcher conservan los metadatos del error subyacente cuando están disponibles. io.args() no devuelve errores.