关于linux下时间函数的问题

fanchuan 2007-06-06 01:18:18
我用了getrusage()函数来得到这个program的使用时间,和它的系统时间。

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

struct rusage {
struct timeval ru_utime; //user time used
struct timeval ru_stime; //system time used
.....

}

就是说,我用的是utime and stime。现在的问题是,什么时间包含在用户时间?什么时间包含在系统时间? 我的理解是如果是在程序里有系统调用,那么这些系统调用的时间就是此程序的系统时间,比如,Openfile()close()等等。其余的程序时间就是程序的用户时间。

我发现有些帖子说道别的函数,time()--秒级别,clock()-毫秒级别。我的问题是,为什么这个函数的精度不够?是因为记录时间的字段比较短?


多谢多谢
...全文
1193 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dai_weitao 2007-06-13
  • 打赏
  • 举报
回复
struct tm结构, 是一个很详细的时间结构.
获得系统时间是: localtime(&tm), 这个会把时间把存在tm结构里.
然后用mktime(&tm)取得time_t的时间, 是微秒级的.

savagegan 2007-06-13
  • 打赏
  • 举报
回复
系统调用就是内核的操作接口。
如果你的程序一部分时间不需要依赖内核帮你处理,那就运行在用户态,耗费的就是用户时间。
如果另一些操作必需要内核的帮助(如创建socket),那就需要用系统调用进入内核态,由内核帮助处理,这时消耗的就是系统时间。
请高手指教:)
fanchuan 2007-06-06
  • 打赏
  • 举报
回复
----运行kernel代码时是系统时间,用户空间运行时是用户时间。系统调用时是在内核空间运行,所以是系统时间。

有没有什么linux的文档,正式的说:什么组成了某个程序的系统时间?

我没找到特别细的介绍,只是简单的说系统调用。



x86 2007-06-06
  • 打赏
  • 举报
回复
运行kernel代码时是系统时间,用户空间运行时是用户时间。系统调用时是在内核空间运行,所以是系统时间。

至于时间函数的精度,time是系统调用,返回秒,所以精度也都是秒。而clock是标准C函数,返回时钟滴答数,linux下时钟滴答数的频率是100HZ,所以clock的精度是1秒的100分之一,也就是10ms

至于更精确的计数,可以用别的办法,比如select,timer_create, clock_gettime等等

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧