600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Linux C程序实现查看文件夹大小

Linux C程序实现查看文件夹大小

时间:2021-09-19 12:00:10

相关推荐

Linux C程序实现查看文件夹大小

问题描述

在存储空间有限的情况下,经常要对实时判断一个存储文件夹大小,现在用linux C编写一个线程函数,该线程能够实现循环查询某个存储文件夹的大小并通过终端打印出来,能够起到实时监控的作用。

解决方法

代码如下:

代码1:

#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <signal.h>#include <dirent.h>#include <pthread.h>#include <sys/socket.h>#include <netinet/in.h>#include <sys/stat.h> #include<stdlib.h>void* limit_the_file_down_size(void* parameter);int main(){pthread_t pid_Limit_the_file_down_size;pthread_attr_tattr ;pthread_attr_init(&attr); //故障线程属性初始化pthread_attr_setscope(&attr,PTHREAD_SCOPE_SYSTEM);//定义为与系统中所有线程一起竞争CPU时间pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED); //属性设置为分离状态pthread_create(&pid_Limit_the_file_down_size,&attr,limit_the_file_down_size,NULL);pthread_attr_destroy(&attr); //销毁线程while(1){sleep(5);}return EXIT_SUCCESS;}void* limit_the_file_down_size(void* parameter){ int status;while(1){if((status=system("du -sh /home/fip/test/"))<0){printf("system error.\n");exit(0);}sleep(1);}return NULL ;}

编译并运行,观察终端打印显示文件夹大小

在监控过程中加入文件至文件夹,终端输出打印的文件夹大小数值改变

代码2:

#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <signal.h>#include <dirent.h>#include <pthread.h>#include <sys/socket.h>#include <netinet/in.h>#include <sys/stat.h> #include<stdlib.h>#define file_down_path "/home/fip/test/"void* limit_the_file_down_size(void* parameter);int main(){pthread_t pid_Limit_the_file_down_size;pthread_attr_t attr ;pthread_attr_init (&attr); //故障线程属性初始化pthread_attr_setscope (&attr, PTHREAD_SCOPE_SYSTEM);//定义为与系统中所有线程一起竞争CPU时间pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED); //属性设置为分离状态pthread_create(&pid_Limit_the_file_down_size,&attr,limit_the_file_down_size,NULL);pthread_attr_destroy(&attr); //销毁线程while(1){sleep(5);}return EXIT_SUCCESS;}void* limit_the_file_down_size(void* parameter){while(1){ struct stat statbuff;float filesize;int sum(const char *fpath, const struct stat *sb, int typeflag){ filesize+= sb->st_size; return 0; } ftw(file_down_path, &sum, 1);filesize-=4096;减去文件夹自身大小printf("!!!!test!!!! the_size_is %.3f KB\n",filesize/1000);filesize=0;//将filesize置0,否则会累加sleep(1);} return NULL ;

编译并运行,观察终端打印显示文件夹大小

在监控过程中加入文件至文件夹,终端输出打印的文件夹大小数值改变

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。