Ir al contenido

E/S de Terminal

Leer desde stdin y escribir a stdout/stderr para aplicaciones CLI.

Este módulo solo funciona dentro de contexto de terminal. No puede usarlo desde funciones regulares, solo desde procesos ejecutandose en un Terminal Host.
local io = require("io")

Escribir strings a stdout sin nueva linea:

local ok, err = io.write("text", "more")
ParámetroTipoDescripción
...anyNú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ámetroTipoDescripción
...anyNúmero variable de valores a imprimir

Devuelve: boolean, error

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

io.eprint("Error:", message)
ParámetroTipoDescripción
...anyNúmero variable de valores a imprimir

Devuelve: boolean, error

Leer hasta n bytes desde stdin:

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

Devuelve: string, error

Leer una linea desde stdin hasta nueva linea:

local line, err = io.readline()

Devuelve: string, error

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

local ok, err = io.raw(true) -- activar
local ok, err = io.raw(false) -- desactivar
ParámetroTipoDescripción
enablebooleantrue para activar, false para desactivar (por defecto: true)

Devuelve: boolean, error

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 buffer de stdout:

local ok, err = io.flush()

Devuelve: boolean, error

Obtener argumentos de linea de comandos:

local args = io.args()

Devuelve: string[]

CondiciónTipoReintentable
Sin contexto de terminalerrors.UNAVAILABLEno
Operación de escritura fallidaerrors.INTERNALno
Operación de lectura fallidaerrors.INTERNALno
Operación de flush fallidaerrors.INTERNALno

Consulte Manejo de Errores para trabajar con errores.