Согласно man 5 proc , первые четыре поля в строке cpu
/proc/stat
являются
user (1) Время, проведенное в режиме пользователя.
nice (2) Время, проведенное в режиме пользователя с низким приоритетом (nice).
system (3) Время, проведенное в режиме system.
idle (4) Время, проведенное в задаче бездействия.
Таким образом, одной из возможностей было бы прочитать этот файл построчно в буфер с помощью fgets () , а затем использовать sscanf () для анализарелевантная cpu
строка:
char buf[2048];
while (fgets(buf, sizeof(buf), thisfile) != NULL) {
// search for the line with "cpu "
if (strncmp(buf, "cpu ", 4) == 0) {
unsigned long long user;
unsigned long long nice;
unsigned long long system;
unsigned long long idle;
// extract four space separated integer values from what comes after "cpu "
if (sscanf(buf, "cpu %llu %llu %llu %llu", &user, &nice, &system, &idle) != 4)
// if the return value is not 4
// there is an error, handle it
// user, nice, system and idle variables now hold the desired values
// print them or do whatever you like
}
}
Этот ответ реализует то, что было предложено уже в комментариях ранее.