Вопрос
Когда я выполняю «os.execute» в Lua, консоль быстро появляется, выполняет команду, а затем закрывается.Но есть ли способ вернуть вывод консоли, используя только стандартные библиотеки Lua?
Решение
Я думаю, ты хочешь этого http://pgl.yoyo.org/luai/i/io.popen io.popen.Но он не всегда компилируется.
Другие советы
Если у вас есть io.popen, то я использую вот что:
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
Если у вас нет io.popen, то, вероятно, popen(3) недоступен в вашей системе, и вы запутались.Но все порты Lua для unix/mac/windows будут иметь io.popen.
Я не знаю конкретно о Lua, но обычно вы можете запустить команду следующим образом:
comd >comd.txt 2>&1
чтобы записать выходные данные и ошибки в файл comd.txt, а затем использовать функции ввода-вывода языкового файла для их чтения.
Вот как бы я это сделал, если бы сам язык не предусматривал фиксацию стандартного вывода и ошибок.