Вопрос

Когда я выполняю «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, а затем использовать функции ввода-вывода языкового файла для их чтения.

Вот как бы я это сделал, если бы сам язык не предусматривал фиксацию стандартного вывода и ошибок.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top