getrusage - get resource usage
#include <sys/time.h> #include <sys/resource.h> #include <unistd.h>
int getrusage (int who, struct rusage *usage);
getrusage(2) returns the current resource usages, for a who of either RUSAGE_SELF or RUSAGE_CHILDREN.
struct rusage {
struct timeval ru_utime; /* user time used / struct timeval ru_stime; / system time used / long ru_maxrss; / maximum resident set size / long ru_ixrss; / integral shared memory size / long ru_idrss; / integral unshared data size / long ru_isrss; / integral unshared stack size / long ru_minflt; / page reclaims / long ru_majflt; / page faults / long ru_nswap; / swaps / long ru_inblock; / block input operations / long ru_oublock; / block output operations / long ru_msgsnd; / messages sent / long ru_msgrcv; / messages received / long ru_nsignals; / signals received / long ru_nvcsw; / voluntary context switches / long ru_nivcsw; / involuntary context switches */
};
On success, zero is returned. On error, -1 is returned, and errno is set appropriately.
SVr4, BSD 4.3
Including <sys/time.h> is not required these days, but increases portability. (Indeed, struct timeval is defined in <sys/time.h>.)
The above struct was taken from BSD 4.3 Reno. Not all fields are meaningful under Linux. Right now (Linux 2.4) only the fields ru_utime, ru_stime, ru_minflt, ru_majflt, and ru_nswap are maintained.
6 pages link to getrusage(2):