Domanda

Quando eseguo un " os.execute " in Lua, si apre rapidamente una console, esegue il comando, quindi si chiude. Ma c'è un modo per recuperare l'output della console usando solo le librerie Lua standard?

È stato utile?

Soluzione

Penso che tu voglia questo http://pgl.yoyo.org/luai/i /io.popen io.popen. Ma non è sempre compilato in.

Altri suggerimenti

Se hai io.popen, questo è quello che 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+

Se non hai io.popen, presumibilmente popen (3) non è disponibile sul tuo sistema e sei nello yogurt profondo. Ma tutte le porte Lua unix / mac / windows avranno io.popen.

, '') s = string.gsub(s, '[\n\r]+', ' ') return s end

Se non hai io.popen, presumibilmente popen (3) non è disponibile sul tuo sistema e sei nello yogurt profondo. Ma tutte le porte Lua unix / mac / windows avranno io.popen.

Non conosco Lua in particolare, ma in genere puoi eseguire un comando come:

comd >comd.txt 2>&1

per acquisire l'output e l'errore nel file comd.txt, quindi utilizzare le funzioni I / O del file delle lingue per leggerlo.

È così che lo farei se il linguaggio stesso non fornisse l'acquisizione di output ed errori stanard.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top