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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top