Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
work around lack of clock_gettime in os x
author: jbenet
os x, compile with: gcc -o testo test.c
linux, compile with: gcc -o testo test.c -lrt
#include <time.h>
#include <sys/time.h>
#include <stdio.h>
#ifdef __MACH__
#include <mach/clock.h>
#include <mach/mach.h>
void current_utc_time(struct timespec *ts) {
#ifdef __MACH__ // OS X does not have clock_gettime, use clock_get_time
clock_serv_t cclock;
mach_timespec_t mts;
host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
clock_get_time(cclock, &mts);
mach_port_deallocate(mach_task_self(), cclock);
ts->tv_sec = mts.tv_sec;
ts->tv_nsec = mts.tv_nsec;
clock_gettime(CLOCK_REALTIME, ts);
int main(int argc, char **argv) {
struct timespec ts;
printf("s: %lu\n", ts.tv_sec);
printf("ns: %lu\n", ts.tv_nsec);
return 0;
Copy link

matrumz commented Nov 17, 2015

Many thanks. My senior project is that much closer to completion!

Copy link

raymondtay commented Nov 24, 2015

thanks for sharing,appreciate it.

Copy link

rraallvv commented Apr 29, 2016

I need the return value in clock_get_time(..), how can it be done os OS X?
For details please see

Copy link

aczzdx commented Nov 14, 2017

Thanks for sharing. This code helps me a lot.

Copy link

hotstaff commented Mar 28, 2019

This very useful.
Thank you.

Copy link

codrutaritivoiu19 commented Apr 5, 2019

Nice code. Is this code under a license?
Thank you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment