문제

LUA에서 "OS.Execute"를 수행하면 콘솔이 빠르게 나타나고 명령을 실행 한 다음 닫습니다. 그러나 표준 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)을 사용할 수 없으며 Deep Yoghurt에 있습니다. 그러나 모든 UNIX/MAC/Windows LUA 포트에는 io.popen이 있습니다.

LUA에 대해 구체적으로 모르지만 일반적으로 다음과 같은 명령을 실행할 수 있습니다.

comd >comd.txt 2>&1

file comd.txt의 출력과 오류를 캡처하려면 언어 파일 I/O 함수를 사용하여 읽으십시오.

언어 자체가 Stanard 출력 및 오류를 캡처하기 위해 제공하지 않았다면 그렇게하는 방법입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top