When I do an "os.execute" in Lua, a console quickly pops up, executes the command, then closes down. But is there some way of getting back the console output only using the standard Lua libraries?
+1
A:
I don't know about Lua specifically but you can generally run a command as:
comd >comd.txt 2>&1
to capture the output and error to the file comd.txt, then use the languages file I/O functions to read it in.
That's how I'd do it if the language itself didn't provide for capturing stanard output and error.
paxdiablo
2008-09-25 10:11:05
+3
A:
I think you want this http://pgl.yoyo.org/luai/i/io.popen io.popen. But it's not always compiled in.
Arle Nadja
2008-09-27 08:56:01
+3
A:
If you have io.popen, then this is what I use:
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+$', '') s = string.gsub(s, '[\n\r]+', ' ') return s end
If you don't have io.popen, then presumably popen(3) is not available on your system, and you're in deep yoghurt. But all unix/mac/windows Lua ports will have io.popen.
Norman Ramsey
2008-11-28 21:19:22