Pergunta
Quando eu faço um "os.execute" na Lua, uma consola rapidamente aparece, executa o comando, em seguida, fecha. Mas há alguma maneira de receber de volta a saída do console usando apenas as bibliotecas padrões de Lua?
Solução
Eu acho que você quer este http://pgl.yoyo.org/luai/i /io.popen io.popen. Mas não é sempre compilado.
Outras dicas
Se você io.popen, então este é o que eu 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+$', '') s = string.gsub(s, '[\n\r]+', ' ') return s end
Se você não tem io.popen, então popen presumivelmente (3) não está disponível em seu sistema, e você está no iogurte profundo. Mas todas as portas Unix / mac / janelas de Lua terão io.popen.
Eu não sei quanto a Lua especificamente, mas geralmente você pode executar um comando como:
comd >comd.txt 2>&1
Para capturar a saída e erro para o comd.txt arquivo, em seguida, usam as línguas arquivo funções de I / O para lê-lo na.
Isso é como eu faria isso se a língua em si não prevê a captura de saída stanard e erro.