Frage

Wenn ich eine „os.execute“ in Lua tun, eine Konsole schnell erscheint, führt den Befehl aus, schließt sich dann nach unten. Aber ist es eine Möglichkeit, die Konsolenausgabe des Erhaltens nur die Standard-Lua-Bibliotheken zurück?

War es hilfreich?

Lösung

Ich glaube, Sie dieses http://pgl.yoyo.org/luai/i /io.popen IO.popen. Aber es ist nicht immer kompiliert in.

Andere Tipps

Wenn Sie IO.popen haben, dann ist das, was ich benutze:

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

Wenn Sie nicht IO.popen haben, dann vermutlich popen (3) auf dem System nicht verfügbar ist, und Sie sind in tiefen Joghurt. Aber alle Unix / mac / windows Lua Ports IO.popen haben.

Ich weiß nicht, über Lua spezifisch, aber sie können in der Regel einen Befehl wie ausführen:

comd >comd.txt 2>&1

die Ausgabe und Fehler in der Datei comd.txt zu erfassen, verwenden Sie die Sprachen-Datei I / O-Funktionen, die es in lesen.

Das ist, wie ich es tun würde, wenn die Sprache selbst nicht für die Erfassung stanard Ausgabe und Fehler vorsah.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top