北极星6号 2016-04-03 07:46 采纳率: 33.3%
浏览 1466

UNIX环境高级编程 times() 疑问

  1. 例程
 int main(int argc, char *argv[])
{
        clock_t s_clk,e_clk;
        struct tms s_tms,e_tms;

        s_clk = times(&s_tms);
        system("ls /dev");
        system("date");
        sleep(1);
        e_clk = times(&e_tms);
        printf("e_clk %ld - s_clk %ld = %ld\n",e_clk , s_clk,e_clk-s_clk);
// pr_time(1,s_tms,e_tms);

        printf("user time e_tms %ld - s_tms %ld = %ld\n",
                        e_tms.tms_utime,s_tms.tms_stime,(e_tms.tms_utime - s_tms.tms_utime));
        printf("system time e_tms %ld - s_tms %ld = %ld\n",
                        e_tms.tms_stime,s_tms.tms_stime,(e_tms.tms_stime - s_tms.tms_stime));

        return 0;
}

./a.out
2016年 04月 03日 星期日 15:40:10 CST
e_clk 1742131978 - s_clk 1742131878 = 100
user time e_tms 0 - s_tms 0 = 0
system time e_tms 0 - s_tms 0 = 0

时间差为什么还是 0.

  • 写回答

2条回答 默认 最新

  • 小灸舞 2016-04-03 11:53
    关注

    楼主要不sleep久一点试试。
    如果一个进程 的运行时间很短,短到和系统的计时器间隔一个数量级,用这种方法测出来的结果必然是不够精确的,头尾都有误差。

    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站