times(2)


NAME

   times - get process times

SYNOPSIS

   #include <sys/times.h>

   clock_t times(struct tms *buf);

DESCRIPTION

   times()  stores  the  current  process times in the struct tms that buf
   points to.  The struct tms is as defined in <sys/times.h>:

       struct tms {
           clock_t tms_utime;  /* user time */
           clock_t tms_stime;  /* system time */
           clock_t tms_cutime; /* user time of children */
           clock_t tms_cstime; /* system time of children */
       };

   The tms_utime field contains the CPU time spent executing  instructions
   of  the  calling  process.   The  tms_stime field contains the CPU time
   spent in the system while executing tasks  on  behalf  of  the  calling
   process.   The  tms_cutime  field contains the sum of the tms_utime and
   tms_cutime  values  for  all  waited-for  terminated   children.    The
   tms_cstime  field  contains  the  sum  of  the tms_stime and tms_cstime
   values for all waited-for terminated children.

   Times for terminated children (and their descendants) are added  in  at
   the  moment  wait(2)  or  waitpid(2)  returns  their  process  ID.   In
   particular, times of grandchildren that the children did not  wait  for
   are never seen.

   All times reported are in clock ticks.

RETURN VALUE

   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 appropriately.

ERRORS

   EFAULT tms points outside the process's address space.

CONFORMING TO

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

NOTES

   The number of clock ticks per second can be obtained using:

       sysconf(_SC_CLK_TCK);

   In POSIX.1-1996 the symbol CLK_TCK (defined in <time.h>)  is  mentioned
   as obsolescent.  It is obsolete now.

   In Linux kernel versions before 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.

   On Linux, the buf argument can be specified as NULL,  with  the  result
   that  times()  just returns a function result.  However, POSIX does not
   specify this behavior, and most other UNIX  implementations  require  a
   non-NULL value for buf.

   Note that clock(3) also returns a value of type clock_t, but this value
   is measured in units of CLOCKS_PER_SEC, not the  clock  ticks  used  by
   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.

   Historical
   SVr1-3  returns long and the struct members are of type time_t although
   they store clock ticks, not seconds since the Epoch.  V7 used long  for
   the struct members, because it had no type time_t yet.

BUGS

   A limitation of the Linux system call conventions on some architectures
   (notably i386) means that on Linux 2.6 there is a small time window (41
   seconds) soon after boot when times() can return -1, falsely indicating
   that an error occurred.  The same problem can  occur  when  the  return
   value wraps past the maximum value that can be stored in clock_t.

SEE ALSO

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

COLOPHON

   This  page  is  part of release 4.09 of the Linux man-pages project.  A
   description of the project, information about reporting bugs,  and  the
   latest     version     of     this    page,    can    be    found    at
   https://www.kernel.org/doc/man-pages/.


More Linux Commands

manpages/move_field.3form.html
move_field(3form) - make and break connections between field
move_field.3form - The function set_form_fields changes the field pointer array of the given form. The array must be terminated by a NULL. The function form_fie

manpages/mount.ntfs.8.html
mount.ntfs(8) - Third Generation Read/Write NTFS Driver.....
ntfs-3g is an NTFS driver, which can create, remove, rename, move files, directories, hard links, and streams; it can read and write files, including streams, s

manpages/XSetRGBColormaps.3.html
XSetRGBColormaps(3) - allocate, set, or read a standard colo
XSetRGBColormaps.3 - The XAllocStandardColormap function allocates and returns a pointer to a XStandardColormap structure. Note that all fields in the XStandard

manpages/sem_close.3.html
sem_close(3) - close a named semaphore - Linux manual page
sem_close() closes the named semaphore referred to by sem, allowing any resources that the system has allocated to the calling process for this semaphore to be

manpages/tcsh.1.html
tcsh(1) - C shell with file name completion and command line
tcsh is an enhanced but completely compatible version of the Berkeley UNIX C shell, csh(1). It is a command language interpreter usable both as an interactive l

manpages/systemd.target.5.html
systemd.target(5) - systemd target configuration files......
A unit configuration file whose name ends in .target encodes information about a target unit of systemd, which is used for grouping units and as well-known sync

manpages/ldapwhoami.1.html
ldapwhoami(1) - LDAP who am i? tool - Linux manual page.....
ldapwhoami implements the LDAP Who Am I? extended operation. ldapwhoami opens a connection to an LDAP server, binds, and performs a whoami operation. OPTIONS -V

manpages/errx.3.html
errx(3) - formatted error messages - Linux manual page......
The err() and warn() family of functions display a formatted error message on the standard error output. In all cases, the last component of the program name, a

manpages/getdents.2.html
getdents(2) - get directory entries - Linux manual page.....
getdents.2 - This is not the function you are interested in. Look at readdir(3) for the POSIX conforming C library interface. This page documents the bare kerne

manpages/ipcmk.1.html
ipcmk(1) - create various ipc resources - Linux manual page
ipcmk allows you to create shared memory segments, message queues, and semaphore arrays. OPTIONS Resources can be specified with these options: -M, --shmem size

manpages/machine-id.5.html
machine-id(5) - local machine ID configuration file.........
The /etc/machine-id file contains the unique machine ID of the local system that is set during installation. The machine ID is a single newline-terminated, hexa

manpages/puts.n.html
puts(n) - Write to a channel (Local - Linux man page).......
Writes the characters given by string to the channel given by channelId. ChannelId must be an identifier for an open channel such as a Tcl standard channel (std





We can't live, work or learn in freedom unless the software we use is free.