Provided by: manpages-dev_2.17-1_all bug


       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.


       EFAULT usage points outside the accessible address space.

       EINVAL who is invalid.


       SVr4, 4.3BSD


       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  1003.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)