2023年7月3日发(作者:)
Linux下C语⾔获取硬盘,CPU,内存使⽤率硬盘#include /* 或者 */int statfs(const char *path, struct statfs *buf);int fstatfs(int fd, struct statfs *buf);参数:path: 位于需要查询信息的⽂件系统的⽂件路径名(不是设备名,是挂载点名称)。fd: 位于需要查询信息的⽂件系统的⽂件描述词。buf:以下结构体的指针变量,⽤于储存⽂件系统相关的信息struct statfs
{
long f_type; /*
⽂件系统类型 */
long f_bsize; /*
经过优化的传输块⼤⼩ */
long f_blocks; /*
⽂件系统数据块总数 */
long f_bfree; /*
可⽤块数 */
long f_bavail; /*
⾮超级⽤户可获取的块数 */
long f_files; /*
⽂件结点总数 */
long f_ffree; /*
可⽤⽂件结点数 */
fsid_t f_fsid; /*
⽂件系统标识 */
long f_namelen; /*
⽂件名的最⼤长度 */
};
返回说明:成功执⾏时,返回0。失败返回-1,errno被设为以下的某个值参考代码如下:#include #include int main(){ struct statfs sfs; int i = statfs("/", &sfs); int percent = (sfs.f_blocks - sfs.f_bfree ) * 100 / (sfs.f_blocks - sfs.f_bfree + sfs.f_bavail) + 1; printf("/ %ld %ld %ld %d%% /homen", 4*sfs.f_blocks, 4*(sfs.f_blocks - sfs.f_bfree), 4*sfs.f_bavail, percent); system("df /"); printf("n%dn",percent); return 0;}CPU这条shell命令下去top | head -3 | tail -1%Cpu(s): 3.2 us, 0.0 sy, 0.0 ni, 90.3 id, 6.5 wa, 0.0 hi, 0.0 si, 0.0 stussyniidwahisist⽤户空间占⽤CPU百分⽐内核空间占⽤CPU百分⽐⽤户进程空间内改变过优先级的进程占⽤CPU百分⽐空闲CPU百分⽐等待输⼊输出的CPU时间百分⽐硬中断(Hardware IRQ)占⽤CPU的百分⽐软中断(Software Interrupts)占⽤CPU的百分⽐在虚拟环境中运⾏时在其他操作系统上花费的时间内存free -m源码#include #include #include #include #include #include #include #include int main(){ // memory double memory_have = 0; system("sudo free -m | grep Mem > "); system("sudo chmod 777 "); FILE * fp; fp = fopen ("", "r"); if(fp == NULL) { printf("open file: error
"); return 0; } char s1[20] = {}; double total = 0; double used = 0; fscanf(fp, "%s %f %f", s1, &total, &used); fclose(fp); fp = NULL; memory_have = 100 - ((100 * used) / total);
// disk int disk_have = 0; struct statfs sfs; int ret = statfs("/", &sfs); disk_have = (sfs.f_blocks - sfs.f_bfree ) * 100 / (sfs.f_blocks - sfs.f_bfree + sfs.f_bavail) + 1;
// cpu system("sudo cat /proc/stat | head -1 > "); system("sudo chmod 777 "); fp = fopen ("", "r"); if(fp == NULL) { printf("
open file: error
"); return 0; } char str1[20] = {}; int user, nice, system, idle; fscanf(fp, "%s %d %d %d %d", str1, &user, &nice, &system, &idle); fclose(fp); fp = NULL; double cpu_have = 100 * (user + nice + system) / (user + nice + system + idle);
printf("cpu:%.1f,disk:%d,memory:%.1f", cpu_have, disk_have, memory_have); return 0;}
发布者:admin,转转请注明出处:http://www.yc00.com/web/1688330006a121219.html
评论列表(0条)