dirent.h 헤더를 사용하여 디렉터리의 파일 크기를 가져 오려고했습니다. 그러나디렉터리의 파일 크기를 가져 오는 중
stat(ent->d_name, &statbuf)
은 항상 -1을 반환하고 크기를 올바르게 가져올 수 없습니다. 그 이유는 무엇일까요?
dirent.h 헤더를 사용하여 디렉터리의 파일 크기를 가져 오려고했습니다. 그러나디렉터리의 파일 크기를 가져 오는 중
stat(ent->d_name, &statbuf)
은 항상 -1을 반환하고 크기를 올바르게 가져올 수 없습니다. 그 이유는 무엇일까요?
d_name
에는 해당 디렉토리 내의 파일 이름이 들어 있습니다. stat
은 현재 디렉토리가 아닌 한 디렉토리 부분을 포함하는 이름을 원합니다.
d_name
파일의 전체 경로가 포함 된 임시 문자열을 만듭니다.
편집 : 샘플
char const * DirName = "/tmp";
....
char * FullName = (char*) malloc(strlen(DirName) + strlen(ent->d_name) + 2);
strcpy(FullName, DirName);
strcat(FullName, "/");
strcat(FullName, ent->d_name);
stat(FullName, &statbuf);
free(FullName);
내가 C를 사용 ++ 나는 위의 코드가 작동 것이라고 생각했지만, 여전히 *는 char 빈에서 변환을 필요로했기 때문에 그것을하지 않았다 :
char *fullName = (char*) malloc(strlen(path) + strlen(entry->d_name) + 2);
잘하면이 사람을 도울 수 있습니다 :)
내가 통계에 디렉토리 이름을 준 후, 그것은 항상 파일 당 4096을 반환했습니다. – thetux4
thetux4 : stat에 * directory *와 * file *로 구성된 문자열을 제공해야합니다. 디렉토리 이름 만 지정하면 일반적으로 4096에서 시작하는 디렉토리의 크기가 표시됩니다. – Erik
감사합니다. Erik, 내 문제가 해결되었습니다. – thetux4