Chapter Contents |
Previous |
Next |
times |
Portability: | POSIX.1 conforming, UNIX compatible |
SYNOPSIS | |
DESCRIPTION | |
RETURN VALUE | |
EXAMPLE | |
RELATED FUNCTIONS |
SYNOPSIS |
#include <time.h> clock_t times(struct tms *buffer);
DESCRIPTION |
times
stores user and system CPU time for a process and its children.
The time information is stored in a
tms
structure located at the address pointed to by
buffer
. The
tms
structure contains the following members:
clock_t
tms_utime
clock_t
tms_stime
clock_t
tms_cutime
tms_utime
and
tms_cutime
values for all child processes that have terminated.
clock_t
tms_cstime
tms_stime
and
tms_cstime
values for all child processes that have terminated.
The
clock_t
type measures
time in clock ticks. The amount of time represented
by each clock tick is determined by the
CLK_TCK
symbol, which is defined in
time.h
.
RETURN VALUE |
If successful,
times
returns a positive value representing elapsed time, and
((clock_t) -1)
if it is unsuccessful.
The elapsed time value is referenced from an arbitrary point; hence, it is
only useful when making more than one call to
times
.
Note:
USS computes elapsed time values
using fullword (long) arithmetic. If this computation overflows,
times
indicates an error and sets
errno
to
ERANGE
.
EXAMPLE |
The following example illustrates the
use of
times
to determine
process times:
#include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include <time.h> #include <times.h> #include <stdio.h> #include <stdlib.h> int main(void) { int i, status; pid_t pid; time_t currentTime; struct tms cpuTime; if ((pid = fork()) == -1) { /* Start a child process. */ perror("fork error"); exit(EXIT_FAILURE); } else if (pid == 0) { /* This is the child. */ time(¤tTime); printf("Child process started at %s", ctime(¤tTime)); for (i = 0; i < 5; ++i) { printf("Counting: %dn", i); /* count for 5 seconds. */ sleep(1); } time(¤tTime); printf("Child process ended at %s", ctime(¤tTime)); exit(EXIT_SUCCESS); } else { /* This is the parent. */ time(¤tTime); printf("Parent process started at %s", ctime(¤tTime)); if (wait(&status) == -1 ) /* Wait for child process. */ perror("wait error"); if (WIFEXITED(status)) printf("Child process ended normally.n"); else printf("Child process did not end normally.n"); if (times(&cpuTime) < 0) /* Get process times. */ perror("times error"); else { printf("Parent process user time = %fn", ((double) cpuTime.tms_utime)/CLK_TCK); printf("Parent process system time = %fn", ((double) cpuTime.tms_stime)/CLK_TCK); printf("Child process user time = %fn", ((double) cpuTime.tms_cutime)/CLK_TCK); printf("Child process system time = %fn", ((double) cpuTime.tms_cstime)/CLK_TCK); } time(¤tTime); printf("Parent process ended at %s", ctime(¤tTime)); exit(EXIT_SUCCESS); } }
RELATED FUNCTIONS |
Chapter Contents |
Previous |
Next |
Top of Page |
Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.