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.
楼主要不sleep久一点试试。
如果一个进程 的运行时间很短,短到和系统的计时器间隔一个数量级,用这种方法测出来的结果必然是不够精确的,头尾都有误差。
你的代码获取的是本进程占用的时间,而system函数是创建了一个子进程执行命令,所以在你的代码里,父进程执行时间很短,子进程执行时间较长。你换一个复杂的系统调用命令查看子进程的相关时间就可以看出了,或者你写一个复杂的父进程吧。