首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getrusage问题

getrusage问题
EN

Stack Overflow用户
提问于 2012-04-16 05:28:03
回答 1查看 2.4K关注 0票数 2

您好,我遇到了一个小问题,在为我的OS类的项目工作。我被指示使用getrusage()来确定我正在编写的程序在用户模式和内核模式下所花费的时间。问题是它总是告诉我我的CPU和内核使用率为零。在查找该函数时,手册页提到,如果您的特定linux版本不支持rusage结构的某些成员,则将它们设置为零。基本上,我想知道是否有人可以告诉我,我调用函数和访问它的参数是否正确(这样我就可以知道我是不是问题所在,或者我的内核不支持这些功能)。

代码

代码语言:javascript
复制
struct rusage usage;
struct rusage *p = &usage;

getrusage(RUSAGE_SELF, p);

printf("time in user mode = %ld\ntime in kernel mode = %ld\n", p->ru_utime.tv_sec, p->ru_stime.tv_sec);
EN

回答 1

Stack Overflow用户

发布于 2012-04-16 10:40:25

struct rusage成员ru_utimeru_stime都是struct timeval类型,如下所示:

代码语言:javascript
复制
struct timeval {
    time_t      tv_sec;     /* seconds */
    suseconds_t tv_usec;    /* microseconds */
};

tv_sec告诉您经过的秒数,tv_usec告诉您剩余的微秒数。因此,如果您想打印出整个时间值,则需要同时打印这两个值。

因为您只打印tv_sec成员,所以我怀疑您的程序运行的时间不足以超过0秒。您还需要打印other values

代码语言:javascript
复制
printf("time in user mode = %ld.%06ld ", 
     p->ru_utime.tv_sec, p->ru_utime.tv_usec);
printf("time in kernel mode = %ld.%06ld\n", 
     p->ru_stime.tv_sec, p->ru_stime.tv_usec);

您可以查看the question I linked,了解打印timeval结构的其他方法。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10168109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档