直接调用函数获取,发现读到的只有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;
}