Появилась необходимость читать файлы больше двух гиг. Написал простую програмку:
Code: Select all
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, char *argv[]) {
DIR *dirp;
struct dirent *dp;
struct stat st;
dirp = opendir(".");
while(dirp) {
if ((dp = readdir(dirp)) != NULL) {
if ((strcmp(dp->d_name, ".") == 0) ||
(strcmp(dp->d_name, "..") == 0)) continue;
stat(dp->d_name, &st);
printf("%s %d\n", dp->d_name,st.st_size);
} else break;
}
closedir(dirp);
return 0;
}
компилирую gcc -D__sparcv9 -o t64 t64.c
запускаю "truss ./t64" - core dump на функции stat
запускаю "truss ls -l" - все работает, причем getdirents64 запускает lstat64, а не stat, как у меня.
У кого-нибудь есть идеи почему оно падает? Может я не правильно специфицирую 64bit?
спасибо, кто отзовется