getrusage() - Unix,Linux 系统调用
Tutorials Point


  Unix 初学者指南
  Unix Shell 编程
  高级 Unix
  Unix 有用参考
  Unix 有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考     讨论论坛     关于TP  

getrusage() - Unix,Linux 系统调用


previous next AddThis Social Bookmark Button

广告

名称

getrusage - 获取资源使用情况

语法

#include <sys/time.h>
#include <sys/resource.h>

int getrusage(int who, struct rusage *usage);

描述

getrusage() 返回当前资源使用情况,对于 whoRUSAGE_SELFRUSAGE_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 */
};

返回值

成功时,返回零。失败时,返回 -1,并且 errno 被相应地设置。

错误

标签描述
EFAULT usage 指向可访问地址空间之外。
EINVAL who 无效。

符合标准

SVr4, 4.3BSD。POSIX.1-2001 指定了 getrusage(),但仅指定了 ru_utimeru_stime 字段。

备注

如今不需要包含 <sys/time.h>,但这可以提高可移植性。(实际上,struct timeval<sys/time.h> 中定义。)

在 2.6.9 之前的 Linux 内核版本中,如果 SIGCHLD 的处置设置为 SIG_IGN,则子进程的资源使用情况会自动包含在 RUSAGE_CHILDREN 返回的值中,尽管 POSIX.1-2001 明确禁止这样做。这种不符合标准的行为在 Linux 2.6.9 及更高版本中得到了纠正。

上述结构取自 4.3BSD Reno。并非所有字段在 Linux 下都有意义。在 Linux 2.4 中,仅维护 ru_utimeru_stimeru_minfltru_majflt 字段。从 Linux 2.6 开始,还维护 ru_nvcswru_nivcsw

参见



previous next Printer Friendly

广告


  

广告



广告