内容简介
#include <sys/time.h>%uA0#include <sys/resource.h>
int getrusage(int%uA0who, struct rusage *usage)
描述
getrusage()%uA0返回当前资源使用,对于无论是%uA0RUSAGE_SELF%uA0或%uA0RUSAGE_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%uA0errno%uA0is set appropriately.错误
标签 | 描述 |
---|---|
EFAULT | usage%uA0points outside the accessible address space. |
EINVAL | who%uA0is invalid. |
遵循于
SVr4, 4.3BSD. POSIX.1-2001 specifies%uA0getrusage(), but only specifies the fields%uA0ru_utimeand%uA0ru_stime.注意
Including%uA0<sys/time.h>%uA0is not required these days, but increases portability. (Indeed,struct timeval%uA0is defined in%uA0<sys/time.h>.)In Linux kernel versions before 2.6.9, if the disposition of%uA0SIGCHLD%uA0is set to%uA0SIG_IGNthen the resource usages of child processes are automatically included in the value returned by%uA0RUSAGE_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%uA0ru_utime,%uA0ru_stime,%uA0ru_minflt, and%uA0ru_majflt%uA0are maintained. Since Linux 2.6,%uA0ru_nvcsw%uA0and%uA0ru_nivcsw%uA0are also maintained.