[Previous]
[Contents]
[Next]

clock_gettime()

get the current time of a clock

Synopsis:

#include <time.h>
int clock_gettime( clockid_t clock_id,
                   struct timespec *tp );

Description:

The clock_gettime() function gets the current time of the clock specified by clock_id, and puts it into the buffer pointed to by tp. The only supported clock ID is CLOCK_REALTIME.

The tp parameter points to a structure containing at least the following members:

time_t tv_sec
The number of seconds since 1970.
time_t tv_nsec
The number of nanoseconds expired in the current second. This value increases by some multiple of nanoseconds, based on the system clock's resolution.

Returns:

0
Success
-1
An error occurred. errno is set to indicate the error.

Errors:

EINVAL
The clock_id is not CLOCK_REALTIME.

Examples:

/*
 * This program calculates the time required to
 * execute the program specified as its first argument.
 * The time is printed in seconds, on standard out.
 */
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>

#define BILLION  1000000000L;

int main( int argc, char **argv )
  {
    struct timespec start, stop;
    double accum;

    if( clock_gettime( CLOCK_REALTIME, &start) == -1 ) {
      perror( "clock gettime" );
      exit( EXIT_FAILURE );
    }

    system( argv[1] );

    if( clock_gettime( CLOCK_REALTIME, &stop) == -1 ) {
      perror( "clock gettime" );
      exit( EXIT_FAILURE );
    }

    accum = ( stop.tv_sec - start.tv_sec )
          + ( stop.tv_nsec - start.tv_nsec )
            / BILLION;
    printf( "%lf\n", accum );
    return( EXIT_SUCCESS );
  }

Classification:

POSIX 1003.4

Safety:
Interrupt handler No
Signal handler Yes, but modifies errno
Thread Yes

See also:

clock_getres(), clock_setres(), clock_settime(), errno, qnx_getclock(), qnx_setclock(), ticksize utility


[Previous]
[Contents]
[Next]