Мне нужно найти размер файла или каталога, указанного в командной строке, с помощью stat(). Он отлично работает для файлов (как относительных, так и абсолютных путей), но когда я указываю каталог, он всегда возвращает размер 512 или 1024.
Если я распечатаю файлы в каталоге, это будет выглядеть следующим образом:
Name : .
Name : ..
Name : new
Name : new.c
но на самом деле там находятся только файлы new и new.c. Для этого размер возвращается как 512, даже если я помещаю в каталог больше файлов. Вот мой фрагмент кода:
if (stat(request.data,&st)>=0){
request.msgType = (short)0xfe21;
printf("\n Size : %ld\n",st.st_size);
sprintf(reply.data,"%ld",st.st_size);
reply.dataLen = strlen(reply.data);
}
else{
perror("\n Stat()");
}
}
Где я ошибся???
вот мой запрос, структура ответа:
struct message{
unsigned short msgType;
unsigned int offset;
unsigned int serverDelay;
unsigned int dataLen;
char data[100];
};
struct message request,reply;
Я запускаю его в компиляторе gcc в ОС Unix.