Pregunta
Cuando hago un " os.execute " en Lua, una consola aparece rápidamente, ejecuta el comando y luego se cierra. Pero, ¿hay alguna forma de recuperar la salida de la consola utilizando las bibliotecas estándar de Lua?
Solución
Creo que quieres esto http://pgl.yoyo.org/luai/i /io.popen io.popen. Pero no siempre está compilado.
Otros consejos
Si tienes io.popen, entonces esto es lo que uso:
function os.capture(cmd, raw) local f = assert(io.popen(cmd, 'r')) local s = assert(f:read('*a')) f:close() if raw then return s end s = string.gsub(s, '^%s+', '') s = string.gsub(s, '%s+Si no tienes io.popen, entonces presumiblemente popen (3) no está disponible en tu sistema, y ??estás en un yogur profundo. Pero todos los puertos Lua de Unix / mac / windows tendrán io.popen.
, '') s = string.gsub(s, '[\n\r]+', ' ') return s end
Si no tienes io.popen, entonces presumiblemente popen (3) no está disponible en tu sistema, y ??estás en un yogur profundo. Pero todos los puertos Lua de Unix / mac / windows tendrán io.popen.
No conozco Lua específicamente, pero generalmente puedes ejecutar un comando como:
comd >comd.txt 2>&1
para capturar la salida y el error en el archivo comd.txt, luego use las funciones de E / S del archivo de idiomas para leerlo.
Así es como lo haría si el lenguaje en sí no permitiera capturar la salida y el error estándar.