Provided by: manpages-dev_2.77-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  calling  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.   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)


       This page is part of release 2.77 of the Linux  man-pages  project.   A
       description  of  the project, and information about reporting bugs, can
       be found at