使用c语言编写一个读取 /proc/stat 文件内容,然后 计算每个cpu占用率,并将结果显示出来
时间: 2024-09-10 07:14:42 浏览: 94
在C语言中,我们可以使用文件操作函数和系统调用来处理这种情况。首先,我们需要打开`/proc/stat`文件,这个文件通常用于获取Linux内核的统计信息。接着,我们会解析文件内容,找到CPU相关的数据(如user、nice、sys等),并计算出每个CPU的占用率。以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CPUFILE "/proc/stat"
// 结构体来存储CPU使用情况
typedef struct {
float user;
float nice;
float sys;
float idle;
} CpuUsage;
// 函数来计算单个CPU的使用百分比
float calculate_usage(CpuUsage cpu) {
return (100 - ((cpu.user + cpu.nice + cpu.sys) * 100) / (cpu.idle * 100));
}
int main() {
FILE *fp;
char line[512];
char *token;
CpuUsage cpu[4]; // 假设我们有4个CPU核心
fp = fopen(CPUFILE, "r");
if (fp == NULL) {
perror("Error opening file");
return 1;
}
while (fgets(line, sizeof(line), fp)) {
token = strtok(line, " ");
if (!strcmp(token, "cpu")) { // 跳过标题行
continue;
}
for (int i = 0; i < 4; i++) {
if (sscanf(&token[i], "%f", &cpu[i].user) == 1) {
token += strlen(token);
sscanf(token, "%f", &cpu[i].nice);
token += strlen(token);
sscanf(token, "%f", &cpu[i].sys);
token += strlen(token);
sscanf(token, "%*f", &cpu[i].idle); // 忽略空闲时间
break;
}
}
printf("CPU %d usage: %.2f%%\n", i + 1, calculate_usage(cpu[i]));
}
fclose(fp);
return 0;
}
```
阅读全文