백그라운드에서 리디렉션

백그라운드에서 리디렉션

나는 Python으로 메시지를 인쇄하는 프로그램을 작성했습니다. 나는 이 프로그램이 백그라운드로 가서 메시지를 파일로 인쇄하기를 원합니다. 그래서 나는 bash에 다음과 같이 썼습니다: python program > message &. 문제: 프로그램을 중단할 때만 메시지가 나타납니다(cat 또는 vi 사용). 누군가 문제가 어디에 있는지, 그리고 쉬운 해결책이 있는지 설명해 줄 수 있습니까?

답변1

Python은 출력이 tty가 아닐 때 전체 버퍼링을 사용합니다.

-- 를 사용하여 프로그램을 실행하면 python -upython3에서는 stdout 및 stderr이 버퍼링되지 않고 python2에서는 stdin도 버퍼링되지 않게 됩니다.

이는 백그라운드에서 실행되는 프로그램과 아무 관련이 없지만 해당 프로그램의 stdout이 tty가 아니라는 사실과 관련이 있습니다.

답변2

플러시가 도움이 될까요? 다른 사이트로의 링크는 문제가 되지 않기를 바랍니다. 보다https://stackoverflow.com/questions/230751/how-to-flush-output-of-print-function

관련 정보