Lorsque je fais un "os.execute" dans 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 uniquement en utilisant les bibliothèques Lua standard?
Je pense que vous voulez cela http://pgl.yoyo.org/luai/i/io.popen io.popen. Mais ce n'est pas toujours compilé.
Si vous avez io.popen, voici ce que j'utilise:
fonction os.capture (cmd, raw) local f = assert (io.popen (cmd, 'r')) local s = assert (f: read (' * a ')) f: close () si brut, retourne s end s = string.gsub (s,' ^% s + ',' ') s = string.gsub (s, '% s + $', '') s = string.gsub (s, '[\ n\r] +', '') retourner s fin
Si vous n'avez pas io.popen, alors popen (3) n'est probablement pas disponible sur votre système, et vous êtes dans un yaourt profond. Mais tous les ports Lua unix/mac/windows auront io.popen.
Je ne connais pas Lua spécifiquement mais vous pouvez généralement exécuter une commande comme:
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 les lire.
C'est ainsi que je le ferais si le langage lui-même ne permettait pas de capturer la sortie standard et les erreurs.