Функция
times()
записывает времена текущего процесса в структуру
struct tms
на которую указывает аргумент
buf.
Функция
struct tms
определена в
<sys/times.h>
следующим образом:
struct tms {
clock_t tms_utime; /* пользовательское время */
clock_t tms_stime; /* системное время */
clock_t tms_cutime; /* пользовательское время дочерних процессов */
clock_t tms_cstime; /* системное время дочерних процессов */
};
Поле
tms_utime
содержит процессорное время, прошедшее с момента выполнения команд вызывающего
процесса.
Поле
tms_stime
содержит процессорное время, прошедшее в системе с момента запуска задач вызывающего
процесса.
Поле
tms_cutime
содержит сумму значений полей
tms_cutime
и
tms_stime
для всех ожидающих завершения дочерних процессов.
Поле
tms_cstime
содержит сумму значений полей
tms_stime
и
tms_cstime
для всех ожидающих завершения дочерних процессов.
Времена для завершенных процессов (и их потомков)
добавляются в момент вызова функции
wait(2)
или
waitpid(2),
возвращающая идентификатор процесса.
Все значения времени возвращаются в тиках.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функция
times
возвращает количество тиков часов с определенного момента времени.
В Linux это количество тиков часов с момента запуска системы.
Возвращаемое значение может превысить возможный диапазон типа clock_t.
При ошибке возвращается (clock_t) -1 и глобальная переменная
errno
устанавливается соответствующим образом.
ЗАМЕЧАНИЯ
Число тиков часов в секунду может быть найдено, используя
sysconf(_SC_CLK_TCK);
В стандарте POSIX-1996 обозначение CLK_TCK (определено в
<time.h>)
упомянуто как устаревающее. В настощий момент это устарело.
Если в Linux расположение SIGCHLD установлено в
SIG_IGN,
то время завершенных дочерних процессов автоматически
включается в поля
tms_cstime
и
tms_cutime
хотя POSIX 1003.1-2001 говорит, что так должно быть только если
вызывающий процесс исполнил
wait()
на своих потомков.
Заметим, что
clock(3)
возвращает значения в типе clock_t, который измеряется не в тиках,
а в CLOCKS_PER_SEC.
СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, SVID, POSIX, X/OPEN, BSD 4.3
ПРИМЕЧАНИЯ ПО ИСТОРИИ
В SVr1-3 функция возвращает
long
и члены структуры имеют тип
time_t,
несмотря на то, что оно хранит тики часов, а не секунды,
прошедшие с 1 января 1970 года.
В V7 функция использует
long
для членов структуры, потому что до сих пор не имеет тип
time_t.
На старых системах число тиков часов в секунду можно получить из
переменной HZ.