Как указано в proc (5) , в файле /proc/(pid)/stat
есть поля:
utime %lu
Количество времени, в которое этот процесс был запланирован в
пользовательский режим, измеренный в тактах
(разделить на sysconf (_SC_CLK_TCK). Это
включает время гостя, время гостя (время
потратил на запуск виртуального процессора, смотрите
ниже), так что приложения, которые
не знают о поле времени гостя делать
не потерять это время от их
расчеты.
stime %lu
Количество времени, которое это
процесс был запланирован в ядре
режим, измеренный в тактах (делим
по sysconf (_SC_CLK_TCK).
Чтобы определить использование процессора для определенного процесса, используйте эти поля. Процесс верхнего уровня агрегирует загрузку ЦП для всех потоков; другие разделы можно найти в /proc/(pid)/task
.
.
Если вы предпочитаете получать уведомления, когда время процессора превышает какое-либо пороговое значение, вы можете использовать clock_getcpuclockid , чтобы получить дескриптор его часов процессора, затем timer_create или timerfd чтобы получать уведомления при достижении указанного уровня. Однако обратите внимание, что межпроцессные таймеры cputime являются дополнительной функцией в спецификации POSIX и могут не поддерживаться (я не тестировал).