Вы всегда можете просто открыть «файлы» в системе / proc
, как обычный файл (используя символическую ссылку «сам», поэтому вам не нужно найдите свой собственный pid):
FILE* status = fopen( "/proc/self/status", "r" );
Конечно, теперь вам нужно проанализировать файл, чтобы выбрать нужную информацию.
Библиотечная функция getrusage
возвращает структуру, содержащую большой объем данных о текущем процессе, включая следующие:
long ru_ixrss; /* integral shared memory size */
long ru_idrss; /* integral unshared data size */
long ru_isrss; /* integral unshared stack size */
Однако самая последняя версия Linux в документации говорится об этих трех полях
(unmaintained) This field is currently unused on Linux
, которые затем определяются в руководстве как:
Не все поля заполнены; необслуживаемые поля обнуляются ядром. (Не поддерживаемые поля предназначены для совместимости с другими системами и потому, что они могут однажды поддерживаться в Linux.)
См. getrusage (2)
да, эти - хорошо известные кванторы, используемые в математике. Другой пример - ∃, которое читается как «существует»
Приведенная выше структура была взята из 4.3BSD Reno. Не все поля означают - недопустимы под Linux. В linux 2.4 поддерживаются только поля ru_utime, ru_stime, ru_minflt и ru_majflt. Начиная с Linux 2.6, также поддерживаются ru_nvcsw и ru_nivcsw.