Linux下使用c语言获取一个挂载文件夹可用存储空间以及使用率
直接调用函数获取,发现读到的只有1GB左右,实际是29GB,只能手写一个获取参数函数。
int tfStorageSize(int64_t *availableSpaceMB,int *perCentStorage)
{
FILE *fp;
char buffer[1024];
char *line = NULL;
int64_t availableSpace = -1, blocks = 0, usedSpace = 0;
int usedPercent = -1;
size_t len = 0;
ssize_t read;
if(getTfCardMountStatus() == false)
{
printf("TF no mount\n");
return 1;
}
fp = popen(DF_COMMAND, "r");
if (fp == NULL)
{
perror("popen");
exit(EXIT_FAILURE);
}
while ((read = getline(&line, &len, fp)) != -1)
{
strncpy(buffer, line, sizeof(buffer) - 1);
buffer[sizeof(buffer) - 1] = '\0';
if (strstr(buffer, MOUNT_POINT) != NULL)
{
printf("readStr:%s\n", buffer);
sscanf(buffer, "/dev/mmcblk1p1 %llu %llu %llu %d%% /mnt/recordData", &blocks, &usedSpace, &availableSpace, &usedPercent);
printf("available =%llu MB =%.2f GB.used %d%%\n", availableSpace,((double)availableSpace / 1024.0), usedPercent);
*perCentStorage = usedPercent;
*availableSpaceMB = availableSpace;
}
}
pclose(fp);
free(line);
if (availableSpace == -1 || usedPercent == -1)
{
return 1;
}
return 0;
}