views:

91

answers:

1

Hi I'm trying to get the system time and user time of applications being forked by a shell. I'm just not sure what kind of time I'm getting, seconds? milliseconds? Does anybody know?

printf("System time: %ld.%06ld sec\n",usage.ru_stime.tv_sec, usage.ru_stime.tv_usec);
printf("User time:   %ld.%06ld sec\n\n",usage.ru_utime.tv_sec, usage.ru_utime.tv_usec);

This is a sample of the results I get. I have the time as seconds, but I'm not really sure

#   PID Name System Time User Time                 
*****************************************************
1   12420 firefox 0.148009 sec 0.816051 sec
2   12429 gimp 0.444027 sec 2.512157 sec
3   12442 clear 0.000000 sec 0.000000 sec
+1  A: 

You get neither seconds nor milliseconds nor microseconds - you get struct timeval. This is a structure consisting of two fields: tv_sec gives full seconds, and tv_usec gives microseconds; the latter value being less than one million (so it is always a fraction of a second).

So the resolution that this API supports is microseconds; the unit that you should use in your print statement is seconds - so you do it correctly already.

Martin v. Löwis
Thanks, that makes sense now.