Наилучшим подходом будет использование perf в linux, как упоминалось в osgx, поскольку оно является частью ядра linux. Но он также может быть вызван в коде C / C ++, и нет необходимости, чтобы это были внешние вызовы perf stat.
Просто скачайте исходный код ядра и посмотрите на него. Или, альтернативно, взгляните на эту библиотеку, я думаю, по Google:
http://perfmon2.sourceforge.net/docs_v4.html
это часть проекта perfmon2, но она предназначена для работы с perf. Взгляните на каталог perf_examples, и вы получите идею. Именно так я обрабатываю перф-вызовы из моих C-кодов.