programa org nombre for lua

org - lua roblox



Obtener el estado de retorno Y la salida del programa (5)

Necesito usar Lua para ejecutar un programa binario que puede escribir algo en su stdout y también devuelve un código de estado (también conocido como " estado de salida ").

Busqué en la web y no pude encontrar algo que haga lo que necesito. Sin embargo, descubrí eso en Lua:

  • os.execute() devuelve el código de estado
  • io.popen() devuelve un controlador de archivos que se puede utilizar para leer la salida del proceso

Sin embargo, necesito ambos. Escribir una función de envoltura que ejecute ambas funciones detrás de la escena no es una opción debido a la sobrecarga del proceso y posiblemente a los cambios en el resultado en ejecuciones consecutivas. Necesito escribir una función como esta:

function run(binpath) ... return output,exitcode end

¿Alguien tiene una idea de cómo se puede resolver este problema?

PD. el sistema objetivo sonó Linux.


Con LUA 5.2 puedo hacer lo siguiente y funciona

-- This will open the file local file = io.popen(''dmesg'') -- This will read all of the output, as always local output = file:read(''*all'') -- This will get a table with some return stuff -- rc[1] will be true, false or nil -- rc[3] will be the signal local rc = {file:close()}

Espero que esto ayude...



No puedo usar Lua 5.2, uso esta función auxiliar.

function execute_command(command) local tmpfile = ''/tmp/lua_execute_tmp_file'' local exit = os.execute(command .. '' > '' .. tmpfile .. '' 2> '' .. tmpfile .. ''.err'') local stdout_file = io.open(tmpfile) local stdout = stdout_file:read("*all") local stderr_file = io.open(tmpfile .. ''.err'') local stderr = stderr_file:read("*all") stdout_file:close() stderr_file:close() return exit, stdout, stderr end


Si está ejecutando este código en Win32 o en un entorno POSIX, puede probar esta extensión de Lua: http://code.google.com/p/lua-ex-api/

Alternativamente, podría escribir un pequeño script de shell (suponiendo que bash o similar esté disponible) que:

  • ejecuta el ejecutable correcto, capturando el código de salida en una variable de shell,
  • imprime una nueva línea y un carácter / cadena de terminal en una salida estándar
  • imprime el valor de las variables del caparazón (el código de salida) en una salida estándar

Luego, capture toda la salida de io.popen y analice al revés.

Divulgación completa: no soy un desarrollador de Lua.


sí, tienes razón en que os.execute() tiene devoluciones y es muy simple si entiendes cómo ejecutar tu comando con y sin lua, también querrás saber cuántas variables devuelve, y puede llevar un tiempo, pero creo que puedes probar

local a, b, c, d, e=os.execute(-what ever your command is-)

para mi ejemplo a es un primer argumento devuelto, b es el segundo argumento devuelto, y etc. Creo que respondí correctamente a su pregunta, en función de lo que está preguntando.