第一种方法:
DIR *d;
struct dirent *de;
struct stat buf;
INT32 exists;
INT64 total_size;
d = opendir(".");
if (d == NULL)
{
perror("prsize");
exit(1);
}
total_size = 0;
for (de = readdir(d); de != NULL; de = readdir(d))
{
exists = stat(de->d_name, &buf);
if (exists < 0)
{
fprintf(stderr, "Couldn't stat %s\n", de->d_name);
}
else
{
total_size += buf.st_size;
}
}
closedir(d);
printf("%d\n", total_size);
第二中方法:
FILE *fp;
CHAR databuff[1024] = {0};
CHAR *pstr = NULL;
INT32 file_size = -1;
sprintf(databuff, "du -sh %s/%s/compress_%s/",WORK_DIR_PATH,LOG_DIR_PATH,logname);
printf("\n**************aaaaaaaaaaaaaaaaaaaaaaaaaa***********\n");
fp = popen(databuff, "r");
if (fp == NULL)
{
pclose(fp);
return -1;
}
printf("\n**************1bbbbbbbbbbbbbbbbbbbbbb***********\n");
if (fgets(databuff, sizeof(databuff), fp) != NULL && !(ferror(fp)))
{
pstr = strstr(databuff, "M");
if (pstr != NULL)
{
file_size = (int)(atoi(databuff) * 1);
}
}
else
{
return -1;
}
pclose(fp);
printf("\n**************=%04d***%04d K******\n",file_size,file_size/1024);
return file_size;