STDIN에 대해 NSInputStream을 제공하는 클래스에 접근자를 제공하고 싶습니다. 아마도 수 백 메가 바이트 (또는 기가 바이트는 아닐 수도 있지만)의 데이터 일 수 있습니다.잠재적으로 큰 STDIN 데이터를 두 번 이상 처리합니다.
발신자가이 NSInputStream을 가져 오면 발신자가 포함 된 데이터를 고갈하지 않아도 읽을 수 있어야합니다. 즉, 다른 코드 블록이 NSInputStream을 요청할 수 있으며이 코드에서 읽을 수 있어야합니다.
모든 데이터를 먼저 메모리 소모가 발생할 수있는 NSData 객체로 복사하지 않고 처리 할 수있는 옵션은 무엇입니까? 반환 된 NSInputStream은 동일한 인스턴스 일 필요는 없으며 단순히 동일한 데이터를 제공해야합니다.
제가 지금 생각해 볼 수있는 가장 좋은 점은 임시 파일에 STDIN을 복사 한 다음 해당 파일을 사용하여 NSInputStream 인스턴스를 반환하는 것입니다. 이것은 이것을 처리하는 유일한 방법 일까? 임시 파일 경로를 선택하는 경우주의해야 할 사항이 있습니까?
편집 | 언급해야 할 것은 이 실제로 STDIN이 아니며, 이것은 멀티 스레드 FastCGI 응용 프로그램에 있으며 STDIN에서 나온 FCGX_Request.in
스트림입니다. 파이프 나 소켓에서 데이터를 읽을 때
눈부신 감사합니다. 데이터를 직접 처리 한 다음 다시 소비자에게 제공해야하므로 필자의 첫 번째 본능으로 이동하여 임시 파일에 기록해야합니다. – d11wtq