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) is
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. For 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
(i.e., about 429 million) seconds before system boot time.
The return value may overflow the possible range of type
clock_t. On error,
(clock_t) −1 is
returned, and errno is set
appropriately.
CONFORMING TO
SVr4, 4.3BSD, POSIX.1-2001.
NOTES
The number of clock ticks per second can be obtained
using
In POSIX-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 only happen if
the calling process wait(2)s on its children.
This non-conformance 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 behaviour, and
most other Unix implementations require a non-NULL value for
buf.
Note that clock(3) returns values of
type clock_t that
are not measured in clock ticks but in CLOCKS_PER_SEC.
On older systems the number of clock ticks per second is
given by the variable HZ.
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.
SEE ALSO
time(1), getrusage(2), wait(2), clock(3), sysconf(3), time(7)
Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
Since the Linux kernel and libraries are constantly changing, this
manual page may be incorrect or out-of-date. The author(s) assume no
responsibility for errors or omissions, or for damages resulting from
the use of the information contained herein. The author(s) may not
have taken the same level of care in the production of this manual,
which is licensed free of charge, as they might when working
professionally.
Formatted or processed versions of this manual, if unaccompanied by
the source, must acknowledge the copyright and authors of this work.
Modified by Michael Haardt (michael@moria.de)
Modified Sat Jul 24 14:29:17 1993 by Rik Faith (faith@cs.unc.edu)
Modified 961203 and 001211 and 010326 by aeb@cwi.nl
Modified 001213 by Michael Haardt (michael@moria.de)
Modified 13 Jun 02, Michael Kerrisk <mtk-manpages@gmx.net>
Added note on non-standard behaviour when SIGCHLD is ignored.
Modified 2004-11-16, mtk, Noted that the non-conformance when
SIGCHLD is being ignored is fixed in 2.6.9; other minor changes
Modified 2004-12-08, mtk, in 2.6 times() return value changed
2005-04-13, mtk
Added notes on non-standard behaviour: Linux allows 'buf' to
be NULL, but POSIX.1 doesn't specify this and it's non-portable.
|