현재 응용 프로그램 대리인의 freopen() 호출을 사용하여 NSLog() 출력을 파일로 리디렉션하고 있습니다. 나는 로그 파일 크기를 제한 할 좋아하지만 this-freopen() 및 stderr에 버퍼 제공 (iOS 응용 프로그램의 로그 파일 크기 제한)
unsigned long long fs = 3000;
while ([fileAttributes fileSize] < fs) {
freopen([FILEPATH cStringUsingEncoding:NSASCIIStringEncoding], "a+", stderr);
}
가 무한 루프에 검은 화면에 붙어있을 수있는 응용 프로그램을 야기하고있는 것이다. stderr의 버퍼 크기를 설정할 수있는 방법이 있습니까? 그리고 나서 파일 크기 + 버퍼 크기가 파일 크기를 초과하지 않으면 파일에 계속 쓰기 만하는 루프가 있습니까?
freopen()은 원자 성명과 비슷합니다. 응용 프로그램이 종료 될 때까지 쓰기가 계속됩니다. 파일 크기가 fs보다 커지면 freopen()을 중지하는 방법을 모르겠습니다. –
로그 파일로 리디렉션하려면 파일을 한 번만 다시 열면됩니까? 그 후 NSLog에서 현재 파일 크기를 확인하십시오. 임계 값보다 작 으면 데이터를 기록하십시오. 그렇지 않으면 함수를 종료하십시오. – DavidN