У меня есть приложение C++, названное./вздор (к которому у меня есть исходный код),
когда я работаю./вздор
Я могу выполнить "вершину" и видеть, сколько используют память и CPU "./вздор".
Теперь, есть ли так или иначе для"./вздор" получить доступ к самой той информации? Т.е. когда я работаю./вздор, я хочу это к каждому второму дампу, это - CPU & Memory usage. Какой библиотекой я должен пользоваться, чтобы сделать это?
Я нахожусь на MacOSX; но я предпочел бы решение, которое работает над Linux также.
Спасибо!
Вы хотите getrusage ()
. На странице руководства :
int getrusage (int who, struct rusage * r_usage);
getrusage ()
возвращает информацию, описывающую ресурсы, используемые текущим процессом, или все его завершенные дочерние процессы. Параметрwho
- это либоRUSAGE_SELF
, либоRUSAGE_CHILDREN
. Буфер, на который указываетr_usage
, будет заполнен следующей структурой:struct rusage { struct timeval ru_utime; / * используемое время пользователя * / struct timeval ru_stime; / * используемое системное время * / long ru_maxrss; / * полный максимальный размер резидентного набора * / long ru_ixrss; / * общий объем общей текстовой памяти * / long ru_idrss; / * полный размер неразделенных данных * / long ru_isrss; / * полный размер неразделенного стека * / long ru_minflt; / * страница востребована * / long ru_majflt; / * ошибки страницы * / long ru_nswap; / * свопы * / long ru_inblock; / * блокировать операции ввода * / long ru_oublock; / * блокировать операции вывода * / long ru_msgsnd; / * сообщения отправлены * / long ru_msgrcv; / * сообщения получены * / long ru_nsignals; / * сигналы получены * / long ru_nvcsw; / * добровольное переключение контекста * / long ru_nivcsw; / * непроизвольное переключение контекста * / };
Если вы заинтересованы в использовании этой информации для профилирования вашего приложения, вы можете использовать dtrace на OSX:
http://www.mactech.com/articles/mactech/Vol.23/23.11/ExploringLeopardwithDTrace/index.html
Linux предоставляет эту информацию в:
/proc/<pid>/stat
И вы можете получить текущий pid с помощью:
getpid()
Returns pid_t.
Вот кусок кода, который я нашел, отображающий эту информацию в разумном формате: http://brokestream.com/procstat.html
Я не знаю, работает ли это на Mac OSX.
EDIT: Mac OS X не имеет файловой системы procfs, поэтому это не будет работать на Mac OSX, извините!