2
Ninja c/C++ 빌드 시스템에 대한 호출을위한 래퍼 스크립트를 작성 중이며 스크립트는 파이썬으로되어 있습니다. 한 가지해야 할 일은 Ninja 및 기본 컴파일러의 출력을 로그하는 것입니다 그러나 표준 출력을 억제하지 않고.파이썬 하위 프로세스에서 터미널 출력 복사하기
나를 괴롭히는 부분은 닌자가 터미널에 쓰고 있는지 아닌지 감지하는 것 같습니다. 출력물을 잡아서 표준 출력으로 보내면 간단히 변경됩니다 (특히 닌자는 화면에 경고 및 오류가없는 buildfiles 목록이 있지만 마지막으로 성공적으로 빌드 된 번역 단위의 행을 제거합니다. Ninja가 출력을 캡처하면서 터미널에 쓸 수있게 할 방법이 있습니까? 터미널로의 쓰기는 Ninja 하위 프로세스가 실행될 때 발생해야하지만, 해당 출력을 캡처하면 하위 프로세스가 완료 될 때까지 대기 할 수 있습니다.
import os
import pty
logfile = open('logfile', 'wb')
def read(fd):
data = os.read(fd, 1024)
logfile.write(data)
return data
pty.spawn("ninja", read)
: