Question
Quand je fais un "os.execute" à Lua, une console apparaît rapidement, exécute la commande, puis se ferme. Mais existe-t-il un moyen de récupérer la sortie de la console en utilisant uniquement les bibliothèques Lua standard?
La solution
Je pense que vous voulez ce http://pgl.yoyo.org/luai/i /io.popen io.popen. Mais ce n'est pas toujours compilé dedans.
Autres conseils
Si vous avez io.popen, c’est ce que j’utilise:
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+Si vous n'avez pas io.popen, alors vraisemblablement popen (3) n'est pas disponible sur votre système et vous vous trouvez dans un yaourt profond. Mais tous les ports Lua unix / mac / windows auront io.popen.
, '') s = string.gsub(s, '[\n\r]+', ' ') return s end
Si vous n'avez pas io.popen, alors vraisemblablement popen (3) n'est pas disponible sur votre système et vous vous trouvez dans un yaourt profond. Mais tous les ports Lua unix / mac / windows auront io.popen.
Je ne connais pas spécifiquement Lua, mais vous pouvez généralement exécuter une commande en tant que:
comd >comd.txt 2>&1
pour capturer la sortie et l'erreur dans le fichier comd.txt, puis utilisez les fonctions d'E / S du fichier de langues pour le lire.
C’est ce que je ferais si le langage lui-même ne permettait pas de capturer les sorties standard et les erreurs.