initial commit

This commit is contained in:
2025-07-10 10:12:18 -04:00
commit d93243566c
8 changed files with 220 additions and 0 deletions

53
sb-cpu.c Normal file
View File

@@ -0,0 +1,53 @@
#include <stdio.h>
#include <unistd.h>
typedef struct {
long long idle;
long long total;
} cpu_stats_t;
static int read_cpu_stats(cpu_stats_t *stats) {
FILE *fp = fopen("/proc/stat", "r");
if (!fp)
return 1;
long long user, nice, system, idle, iowait, irq, softirq;
int ret = fscanf(fp, "cpu %lld %lld %lld %lld %lld %lld %lld", &user, &nice,
&system, &idle, &iowait, &irq, &softirq);
fclose(fp);
if (ret != 7)
return 1;
stats->idle = idle + iowait;
stats->total = user + nice + system + idle + iowait + irq + softirq;
return 0;
}
static double calculate_usage(cpu_stats_t *prev, cpu_stats_t *curr) {
long long diff_total = curr->total - prev->total;
long long diff_idle = curr->idle - prev->idle;
if (diff_total == 0)
return 0.0;
return 100.0 * (diff_total - diff_idle) / diff_total;
}
int main() {
cpu_stats_t prev, curr;
if (read_cpu_stats(&prev) < 0) {
fprintf(stderr, "Error reading CPU stats\n");
return 1;
}
sleep(1);
if (read_cpu_stats(&curr) < 0) {
fprintf(stderr, "Error reading CPU stats\n");
return 1;
}
printf("CPU: %.0f%%\n", calculate_usage(&prev, &curr));
return 0;
}