LINUX -C读取磁盘和文件大小
code:
//获取文件大小
unsigned long get_file_size()
{
int len = lseek(log_fd, 0L, SEEK_END);
return len;
}
//获取剩余磁盘大小
int get_system_tf_free(double *size)
{
if(size== NULL)
return -1;
struct statfs diskInfo;
statfs("/home/data",&diskInfo); //磁盘(我这里是U盘)地址
unsigned long long totalBlocks = diskInfo.f_bsize;
unsigned long long disk = diskInfo.f_bfree*totalBlocks;
*size= disk;
return 0;
}
void check_disk()
{
char buf[1024]={0};
static int i=0;
double temp;
//sem_status.led_status = 3;
if(i++ > 100)
{
//检查磁盘总量
get_system_tf_free(&temp);
if(temp <= 20*1024*1024) //如果小于20M,就认为没空间了
{
sem_status.uart_mode = 2;
sem_status.led_status = 3;
}
i = 0;
printf("size:%f\r\n",temp);
//检查log文件
int size_log = get_file_size();
if(size_log >= 10*1024*1024) //如果文件大于10M
{
printf("clear log file\r\n");
int res = ftruncate(log_fd,0);
if(res != -1)
{
printf("clear ok\r\n");
}
//重新设置偏移量
lseek(log_fd,0,SEEK_SET);
}
}
}