2013-04-22 4 views
1

파일 크기 및 생성 날짜 만 있으면 fstat() 기능을 사용할 수 있습니까?
ftell()을 사용하여 파일 크기를 얻을 수 있지만 제작 시간과 날짜도 필요하다는 것을 알고 있습니다. fstat()을 사용하고 싶지 않은 이유는 파일 목록이 길면 많은 시간이 걸리기 때문입니다.fstat에 대한 대안은 무엇입니까?

+0

사용중인 OS는 무엇입니까? –

+0

'fstat'는 크기를 알려주므로 그 정보를 사용하면 작업 수를 줄여야합니다. –

+6

fstat에 열린 파일이 필요합니다. 어쨌든 fstat가 좋은 선택입니다. 그렇지 않다면 stat()를 사용하십시오. 과. 이러한 호출 중 하나는 파일 메타 데이터를 찾는 속도만큼 빠릅니다. 원하는 모든 것이 파일 메타 데이터 인 경우. –

답변

3

파일이 열려있는 경우 fstat을 사용하십시오. 파일 이름을 알고 파일을 열지 않으려면 stat을 사용하십시오. 그것은 얻을 수있는만큼 빠릅니다. 다른 기능을 사용하려면 stat 또는 fstat을 내부적으로 사용하거나 커널 내부의 해당 기능을 사용합니다. 이러한 시스템 호출은 파일 시스템에서 메타 데이터를 읽어야하며 캐시에 없으면 디스크로 이동하여 시간이 걸립니다. 주변에는 방법이 없습니다.

+0

+1. fstat가 느리면 디렉토리 i- 노드가 너무 큰 경우 일 수 있습니다. 작은 디렉토리 항목을 사용하면 i- 노드에서 메타 데이터 읽기 속도가 빨라질 수 있습니다. – TrueY

+0

모든 의견을 주셔서 대단히 감사드립니다. 메타 데이터에 액세스하고 생성 시간/날짜를 얻기 위해 fstat()를 사용하고있었습니다. 나는 fstat() 함수가 반환하는 큰 구조 대신 크기와 생성 시간/날짜 만 얻는 방법을 생각하고있었습니다. 응답에서 나는 더 좋은 대안이 없다고 생각한다. – CatchMeIfYouTry

관련 문제