rusage() измеряется в секундах или миллисекундах?

Привет я пытаюсь получить системное время и время пользователя приложений, которые разветвляются оболочкой. Я просто не уверен, какое время я получаю, секунды? миллисекунды? Кто-нибудь знает?

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);

Это образец результатов, которые я получаю. У меня есть время в секундах, но я не совсем уверен

#   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 ответ

Решение

Вы не получаете ни секунды, ни миллисекунды, ни микросекунды - вы получаете struct timeval, Это структура, состоящая из двух полей: tv_sec дает полные секунды, и tv_usec дает микросекунды; последнее значение меньше одного миллиона (так что оно всегда составляет долю секунды).

Таким образом, разрешение, которое поддерживает этот API, составляет микросекунды; единица измерения, которую вы должны использовать в своем выражении печати, - это секунды, поэтому вы уже делаете это правильно.

Другие вопросы по тегам