getrusage — get resource usage
#include <sys/time.h> #include <sys/resource.h>
int
getrusage( |
int | who, |
| struct rusage * | usage); |
getrusage() returns current
resource usages, for a who of either RUSAGE_SELF or RUSAGE_CHILDREN. The former asks for
resources used by the current process, the latter for
resources used by those of its children that have terminated
and have been waited for.
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, 4.3BSD. POSIX.1-2001 specifies getrusage(), but only specifies the fields
ru_utime and
ru_stime.
Including <sys/time.h> is not
required these days, but increases portability. (Indeed,
struct timeval is
defined in <sys/time.h>.)
In Linux kernel versions before 2.6.9, if the disposition
of SIGCHLD is set to
SIG_IGN then the resource
usages of child processes are automatically included in the
value returned by RUSAGE_CHILDREN, although POSIX.1-2001
explicitly prohibits this. This non-conformance is rectified
in Linux 2.6.9 and later.
The above struct was taken from 4.3BSD Reno. Not all
fields are meaningful under Linux. In linux 2.4 only the
fields ru_utime,
ru_stime,
ru_minflt, and
ru_majflt are
maintained. Since Linux 2.6, ru_nvcsw and ru_nivcsw are also
maintained.
getrlimit(2), times(2), wait(2), wait4(2)
|
|