Provided by: manpages-ru-dev_4.18.1-1_all bug

ИМЯ

       times - возвращает времена процесса

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <sys/times.h>

       clock_t times(struct tms *buf);

ОПИСАНИЕ

       Вызов  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_utime  и  tms_cutime  всех  ожидающих
       завершения  потомков.  В  поле tms_cstime содержится сумма значений tms_stime и tms_cstime
       всех ожидающих завершения потомков.

       Времена завершившихся потомков (и их потомков) добавляются  в  момент  когда  wait(2)  или
       waitpid(2)  возвращают их ID процесса. При этом, времена внуков, которых потомки не ждали,
       никогда не добавляются.

       Все времена считаются в тиках часов.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       times()  returns the number of clock ticks that have elapsed since an arbitrary  point  in
       the  past.   The  return value may overflow the possible range of type clock_t.  On error,
       (clock_t) -1 is returned, and errno is set to indicate the error.

ОШИБКИ

       EFAULT Значение tms указывает за пределы адресного пространства процесса.

СТАНДАРТЫ

       POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.

ЗАМЕЧАНИЯ

       Количество тиков часов в секунду можно получить с помощью:

           sysconf(_SC_CLK_TCK);

       В POSIX.1-1996 символ CLK_TCK (определённый  в  <time.h>)  упомянут  как  устаревающий.  В
       настоящее время он точно устарел.

       Before  Linux  2.6.9,  if  the disposition of SIGCHLD is set to SIG_IGN, then the times of
       terminated children are automatically included in the tms_cstime  and  tms_cutime  fields,
       although POSIX.1-2001 says that this should happen only if the calling process wait(2)s on
       its children.  This nonconformance is rectified in Linux 2.6.9 and later.

       В Linux значение аргумента buf может  быть  равно  NULL.  В  этом  случае  times()  просто
       возвращает результат функции. Однако в POSIX не описано такое поведение, и для большинства
       других реализаций UNIX требуется не равное NULL значение buf.

       Заметим, что clock(3) также возвращает значение типа clock_t, но это значение измеряется в
       единицах CLOCKS_PER_SEC, а не в тиках часов как у times().

       On  Linux,  the  “arbitrary  point in the past” from which the return value of times()  is
       measured has varied across kernel versions.  On Linux 2.4 and earlier, this point  is  the
       moment  the  system  was  booted.   Since Linux 2.6, this point is (2^32/HZ) - 300 seconds
       before system boot time.   This  variability  across  kernel  versions  (and  across  UNIX
       implementations), combined with the fact that the returned value may overflow the range of
       clock_t, means that a portable application would be wise to avoid using  this  value.   To
       measure changes in elapsed time, use clock_gettime(2)  instead.

   Историческая справка
       В SVr1-3 результат имеет тип long и члены структуры имеют тип time_t, хотя они хранят тики
       часов, а не секунды начиная с Эпохи. В V7 используется long для членов структуры, так  как
       тип time_t ещё не существовал.

ДЕФЕКТЫ

       Ограничение  Linux  в соглашениях системного вызова на некоторых архитектурах (в частности
       i386) приводит к тому, что в Linux 2.6 есть маленький временной интервал (41  секунда),  в
       котором  сразу  после  загрузки  times() может вернуть -1, ложно указывая на существование
       ошибки. Такая же проблема может возникнуть, когда возвращаемое значение становится  больше
       максимального значения типа clock_t.

СМ. ТАКЖЕ

       time(1), getrusage(2), wait(2), clock(3), sysconf(3), time(7)

ПЕРЕВОД

       Русский    перевод    этой    страницы    руководства    был    сделан   Azamat   Hackimov
       <azamat.hackimov@gmail.com>,  Dmitry  Bolkhovskikh  <d20052005@yandex.ru>,   Yuri   Kozlov
       <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы  обнаружите  ошибки  в  переводе этой страницы руководства, пожалуйста, отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.