NSTask에서 메시지를 받기 위해 NSNotificationCenter에서 NSFileHandleReadCompletionNotification 메시지를 읽습니다. 문제는 내가 호출하는 커맨드 라인 프로그램이 출력 라인에 상대적으로 느리고 NSFileHandleReadCompletionNotification 메시지가 비교적 드물게 게시된다는 것입니다 (버퍼가 가득 찼을 때).NSFileHandleReadCompletionNotification에 더 작은 버퍼를 사용할 수 있습니까?
알림이나 모든 행을 게시하는 데 사용할 수있는 다른 알림 메시지가 있습니까? 아니면 버퍼를 더 작게 만들 수있는 방법이 있습니까?
편집 : 분명히 말하면, 버퍼 크기는 "기본 운영 체제의 버퍼 크기에 맞게"NSFileHandle documentation에 있으므로, 다른 트릭이 있기를 바랍니다.
NSFileHandle은 C stdio 스트림을 래핑하지 않습니다. 파일 설명자를 래핑합니다. 'setvbuf'는 아무 효과가 없습니다. 파일 핸들이 내부적으로 스트림에 의해 백업 된 경우에도 해당 스트림에 대한 액세스 권한이 없으므로 스트림을 직접 만들고 버퍼 모드를 설정해도 파일 핸들의 스트림에 영향을 미치지 않습니다. –
저는 꽤 확신합니다. 피터 말이 맞아. 귀하의 제안을 (파이썬 작업에 -u 플래그를 추가하여) 시도했지만 아무 것도 변경되지 않았습니다. 지금까지 시도한 유일한 방법은 파이썬 스크립트의 출력에 공백을 추가하는 것입니다.이 스크립트는 끔찍한 해커처럼 보입니다. – oldpatricka