현재의 무제한 Popen.stdout 개체에서 마지막 N 줄을 가져 오려고합니다. 무제한으로는 무제한/많은 로그 항목을 의미하며 표준 출력에 기록됩니다. Popen.stdout.readline()은 시간에 따라 제한적으로 시도했지만, 이는 거의 출력이없는 임의의 많은 문제를 생성합니다. 현재 출력의 일부 스냅 샷이 도움이되지만 그런 것을 찾을 수 없습니다. 내가 주로 발견하는 모든 해결책은 종료하는 외부 프로세스를위한 것이지만, 마지막 행을 읽은 후에 stdout에 쓸 수 있어야하는 서버 응용 프로그램입니다.무제한 Popen.stdout 개체에서 마지막 N 줄을 얻는 방법
인사말, 먼저 tail
에 당신이 파이프 그것을 할 수있는 프로세스를 시작
Faerbit 유닉스에
단순한 라이브러리 임에도 불구하고 과잉 공격 일 수 있습니다.이 작업에는 'pexpect'를 권하고 싶습니다. 적어도 stdout은 터미널처럼 보이지 않기 때문에 데이터의 전체 페이지를 버퍼링하는 서브 프로그램과 같은 문제를 해결합니다. –
이것이 어떻게 도움이 될지 모르겠습니다. Popen이 가지고있는 것과 같은 것을 읽는 것과 같은 방법이있는 것 같습니다. (또한 그들의 웹 페이지는 매우 이상합니다.) – Faerbit
'무제한'Popen이 의미하는 바를 명확하게 보여줄 수 있습니까? 그것은 당신이 끊임없이 로그 엔트리를 분출하는 웹 서버와 같은 Popen'ed 서브 프로세스를 가지고있는 것과 같은가? 그렇다면 제어 메인 프로세스에서 원하는대로 N 라인을 얻고 싶습니까? – sotapme