std 출력 및 오류 출력을 파일로 비동기적으로 리디렉션 [중복]

std 출력 및 오류 출력을 파일로 비동기적으로 리디렉션 [중복]

스레드가 있는 일부 프로그램의 출력을 특정 파일로 리디렉션하려고 합니다.

달리기를 시도했지만 달리기를 멈추지 않으면 command > file 2&>1여전히 비어 있을 것입니다.commandfile

출력을 비동기적으로 덤프하는 방법이 있습니까 file?

Python 조각 예:

import _thread

def run():
    raise ValueError('plah')

_thread.start_new_thread(run, ())
while True:
    pass

프로그램이 수동으로 중지될 때까지 실행은 python program.py 2> log.txt출력을 생성하지 않습니다 .log.txt

답변1

출력을 수행하다버퍼링되지 않은. Python을 사용하여 이를 수행하는 쉬운 방법은 다음을 설정하는 것입니다 PYTHONUNBUFFERED.

PYTHONUNBUFFERED=1 python program.py 2>log.txt

답변2

Python은 기본적으로 출력을 버퍼링합니다. 이러한 상황을 피하기 위해 플래그가 제공되거나 -u배치 됩니다.PYTHONUNBUFFERED=yes

관련 정보