1:显示存储卡内存和剩余空间
主要函数 statfs
#include <sys/statfs.h>
#include <stdio.h>
int main(int argc,char **argv)
{
struct statfs diskInfo;
statfs(argv[1], &diskInfo);
unsigned long long blocksize = diskInfo.f_bsize; //每个block里包含的字节数
unsigned long long totalsize = blocksize * diskInfo.f_blocks; //总的字节数,f_blocks为block的数目
printf("Total_size = %llu B = %llu KB = %llu MB = %llu GB\n",
totalsize, totalsize>>10, totalsize>>20, totalsize>>30);
unsigned long long freeDisk = diskInfo.f_bfree * blocksize; //剩余空间的大小
unsigned long long availableDisk = diskInfo.f_bavail * blocksize; //可用空间大小
printf("Disk_free = %llu MB = %llu GB\nDisk_available = %llu MB = %llu GB\n",
freeDisk>>20, freeDisk>>30, availableDisk>>20, availableDisk>>30);
return 0;
}
其中 statfs接口第一个参数,要选择已经mount的,而且是挂载点,例如,/dev/mmcblk1 挂载在了/tmp/sd下
第一个参数要填/tmp/sd,如果填/dev/mmcblk1,是得不到数据的
2:判断储存卡状态
(1)是否插入储存卡:
就是判断/dev/下面有没有节点
FILE *fp=NULL;
char buff[128]={0};
int ret;
memset(buff,0,sizeof(buff));
fp = popen("ls /dev/ | grep /dev/mmcblk0p1","r");//将命令ls-l 同过管道读到fp
fread(buff,1,127,fp);//将fp的数据流读到buff中
pclose(fp);
printf("buff:%s\n",buff);
ret = strncmp(buff,"/dev/mmcblk0p1",14);
if (0 == ret) {
printf("online\n");
}
else {
printf("offline\n");
}
(2)是否mount
直接调用mount命令,判断
FILE *fp=NULL;
char buff[128]={0};
int ret;
memset(buff,0,sizeof(buff));
fp = popen("mount | grep /dev/mmcblk0p1","r");//将命令ls-l 同过管道读到fp
fread(buff,1,127,fp);//将fp的数据流读到buff中
pclose(fp);
printf("buff:%s\n",buff);
ret = strncmp(buff,"/dev/mmcblk0p1",14);
if (0 == ret) {
printf("online\n");
}
else {
printf("offline\n");
}
显示/统计目录下的视频信息
建立链表,增删改查 代码太多了,不发了