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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top