Книга: Программирование для Linux. Профессиональный подход

Листинг 7.1. (clock-speed.c) Определение частоты процессора путем анализа файла /proc/cpuinfo

Листинг 7.1. (clock-speed.c) Определение частоты процессора путем анализа файла /proc/cpuinfo

#include <stdio.h>
#include <string.h>
/* Определение частоты процессора в мегагерцах на
   основании данных файла /proc/cpuinfo. В
   многопроцессорной системе будет найдена частота
   первого процессора. В случае ошибки возвращается нуль. */
float get_cpu_clock_speed() {
 FILE* fр;
 char buffer[1024];
 size_t bytes_read;
 char* match;
 float clock_speed;
 /* Загрузка всего файла /proc/cpuinfo в буфер. */
 fp = fopen("/proc/cpuinfo", "r");
 bytes_read = fread(buffer, 1, sizeof(buffer), fp);
 fclose(fp);
 /* Выход, если прочитать файл не удалось или буфер оказался
    слишком маленьким. */
 if (bytes_read == 0 || bytes_read = sizeof(buffer))
  return 0;
 /* Буфер завершается нулевым символом. */
 buffer[bytes_read] = '';
 /* Поиск строки, содержащей метку "cpu MHz". */
 match = strstr(buffer, "cpu MHz");
 if (match == NULL)
  return 0;
 /* Анализ строки и выделение из нее значения частоты
    процессора. */
 sscanf(match, "cpu MHz ; %f" &clock_speed);
 return clock_speed;
}
int main() {
 printf("CPU clock speed: %4.0f Mhzn",
  get_cpu_clock_speed());
 return 0;
}

He забывайте о том. что имена, семантика и формат представления элементов файловой системы /proc меняются при обновлении ядра Linux. Программа должна вести себя корректно в случае, если нужный файл отсутствует или имеет иной формат.

Оглавление книги


Генерация: 1.180. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз