嗨,我在为我的操作系统类工作时遇到了一个小问题。我被指示使用 getrusage() 来确定我正在编写的程序在用户模式和内核模式下花费的时间量。问题是它总是告诉我我的 CPU 和内核使用率为零。在查找该函数时,手册页提到,如果您的特定版本的 linux 不支持 rusage 结构的某些成员,它们将被设置为零。基本上我想知道是否有人可以告诉我我对函数的调用和访问它的参数是否正确(所以我可以判断我是否是问题或我的内核不支持这些功能)。
代码
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);