2014-11-19 4 views
4

루아 (5.1)의 stdout을 콘솔이 아닌 파일로 리디렉션하려고합니다.루아에서 stdout을 파일로 리디렉션하는 방법은 무엇입니까?

데이터의 직렬화 세트를 출력하는 기능을 포함 (I은 수정할 수 없습니다) 타사 API가있다

(필자는 인쇄, 인쇄의 일종을지지 않는 기능 모른다())

이 데이터는 화면에 표시하기에는 너무 길기 때문에 스크롤 할 수는 없으므로이 기능의 출력을 콘솔 대신 파일로 보내야합니다.

나는 루아 버전을 패치하거나 조작 할 능력이 없다.

저의 생각은 제대로 문서화되지 않은 io.output() 파일을 사용하여 stdout을 파일로 변경하려고했으나 전혀 작동하지 않는 것 같습니다.

io.output("foo") -- creates file "foo", should set stdout to "foo"? 
print("testing. 1, 2, 3") -- should print into "foo", goes to console instead 

함수 출력을 파일로 강제 적용하거나 모든 stdout을 콘솔 대신 파일로 강제 변환하는 방법을 아는 사람이 있습니까? TIA.

답변

2

print 대신 io.write 메서드를 사용해야합니다. 비슷한 방식으로 작동하지만 탭으로 매개 변수를 구분하지는 않습니다. io.writeio.output이지만, print은 그렇지 않습니다.

+1

실제로 변경할 수없는 타사 API 함수에서 실제 인쇄가 이루어 지므로이 방법은 도움이되지 않습니다./(그러나 다르게 알고있는 것이 좋습니다). – cwbit

+3

그것은 다른 질문입니다;). API 함수가 여전히 전역'print' 함수를 사용한다면 (C API에 해당하지 않는), 자신의'print'로 대체 할 수 있습니다 :'print = function (...) io.write (table.concat ({.. .}, "\ t") end'. C API를 사용하고 있다면 리다이렉트하거나 monkeypatch 할 수있는 방법이 없다고 생각합니다. 자세한 내용은이 스레드를보십시오 : http://lua-users.org/lists/ lua-l/2012-11/msg00125.html –

+0

컴퓨터 크래프트에는 fs API가 있습니다. 정확하게 기억하면 다음과 같이 사용합니다 : 'foo = fs.open ("foo", "w")' 'foo .writeLine ("testing. 1, 2, 3")' 'foo.close()' – CHlM3RA

관련 문제