| GETRUSAGE(2) | System Calls Manual | GETRUSAGE(2) |
getrusage — get
information about resource utilization
#include
<sys/resource.h>
int
getrusage(int
who, struct rusage
*rusage);
getrusage()
returns resource usage information for argument who,
which can be one of the following:
RUSAGE_SELFRUSAGE_CHILDRENRUSAGE_THREADThe buffer to which rusage points will be filled in with the following structure:
struct rusage {
struct timeval ru_utime; /* user time used */
struct timeval ru_stime; /* system time used */
long ru_maxrss; /* max resident set size */
long ru_ixrss; /* integral shared text 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 */
};
The fields are interpreted as follows:
The numbers ru_inblock and ru_oublock account only for real I/O; data supplied by the caching mechanism is charged only to the first process to read or write the data.
Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
getrusage() will fail if:
The getrusage() function conforms to
IEEE Std 1003.1-2008 (“POSIX.1”).
The RUSAGE_THREAD flag is an extension to
that specification.
A predecessor to getrusage(),
times(), first appeared in
Version 3 AT&T UNIX. The
getrusage() system call first appeared in
4.1cBSD.
The RUSAGE_THREAD flag has been available
since OpenBSD 4.8.
There is no way to obtain information about a child process that has not yet terminated or has not been waited for by the parent.
| July 17, 2024 | openbsd |