Как передать данные “загрузки” cpu в программу на с\с++?

269
26 ноября 2016, 19:09

Суть в следующем: я хочу передать в программу на с\с++ данные о загрузке cpu или gpu(например, температуру) на linux(ubuntu 16.04), но не используя при этом посторонних утилит типа lm sensors. Т.е. я хочу извлекать данные напрямую с датчиков(если это возможно) и передавать их в программу для дальнейших действий, либо как-то получать эти данные в процессе работы программы. Видел много ответов по поводу подобных действий с использованием winapi, но под linux что-то не нашел(или проглядел). А теперь, внимание, вопрос: мб кто-то сталкивался с этим\писал что-то подобное\знает что гуглить на эту тему или даже вдруг знает, как это реализовать? Заранее благодарен!

Answer 1

Непосредственно с датчиков вы эти данные никак не получите. Ядро linux не позволит пользовательскому приложению обращаться напрямую к оборудованию. Кроме того, вам фактически придется реализовывать собственный lm_sensors, потому как на разных чипсетах данные получаются различным образом и по факту нужны драйвера для каждого конкретного датчика. Драйвера датчиков в linux уже есть и они как раз зовутся lm_sensors (ядерная часть, а не утилита). Обратите внимание, в windows точно так же, есть драйвера в ядре и есть интерфейс winapi.

В linux получить всю информацию от драйверов датчиков, а так же управлять некоторыми параметрами (скоростью вращения вентиляторов и пределами) можно через файловый интерфейс /sys/class/hwmon и /sys/bus/platform/devices/coretemp.0. Описание интерфейса можно найти в файле Documentation/hwmon/sysfs-interface исходников ядра.

Загрузку процессоров можно посчитать на основе данных из файла /proc/stat. Описание этого интерфейса можно найти в Documentation/filesystems/proc.txt исходников ядра.

READ ALSO
Функции WinExec, ShellExecute, CreateProcess, system(“…”) не запускают exe приложение!

Функции WinExec, ShellExecute, CreateProcess, system(“…”) не запускают exe приложение!

В лаунчере на С++ должны поочерёдно запускаться несколько других приложенийКомадны запуска для всех приложений одинаковые - например,

231
Среднее арифметическое набора чисел [закрыто]

Среднее арифметическое набора чисел [закрыто]

Данные об успешности студентов записано в N строках символов, каждый из которых имеет следующую структуру: фамилия и др, № зачетной книжки,...

159
Рекурсивный спуск/возврат С++

Рекурсивный спуск/возврат С++

Не могли бы объяснить отличие выполнение кода на рекурсивном спуске и возврате (с примером)? Как вообще определить, что программа выполняется...

541