This code
void print_usage(char * msg)
{
struct rusage usage;
getrusage(RUSAGE_SELF, &usage);
printf(\"Limits: %s\\n\", msg);
printf(\"
Yes it is partly broken. Not all fields are filled by kernel. http://www.kernel.org/doc/man-pages/online/pages/man2/getrusage.2.html
Working fields:
ru_utime
ru_stime
ru_maxrss (since Linux 2.6.32)
ru_minflt
ru_majflt
ru_inblock (since Linux 2.6.22)
ru_oublock (since Linux 2.6.22)
ru_nvcsw (since Linux 2.6)
ru_nivcsw (since Linux 2.6)
Unused fields:
ru_ixrss (unmaintained)
ru_idrss (unmaintained)
ru_isrss (unmaintained)
ru_nswap (unmaintained)
ru_msgsnd (unmaintained)
ru_msgrcv (unmaintained)
ru_nsignals (unmaintained)