sleep function in C11
Use -std=gnu11
instead of -std=c11
(this works for both clang and gcc). This will cause the <time.h>
header to define nanosleep
.
Another alternative to nanosleep
, calling pselect
on a null file descriptor with a timeout, also only works with -std=gnu11
and not -std=c11
For an example of both:
#include <stdio.h>
#include <sys/select.h>
int main() // Compile with -std=gnu11 (and not -std=c11)
{
struct timespec ts1 = {
.tv_sec = 0,
.tv_nsec = 500*1000*1000
};
printf("first\n");
nanosleep(&ts1, NULL);
printf("second\n");
pselect(0, NULL, NULL, NULL, &ts1, NULL);
printf("third\n");
}
In the threads.h header there is the thrd_sleep function
int thrd_sleep( const struct timespec* time_point, struct timespec* remaining )
http://en.cppreference.com/w/c/thread/thrd_sleep
There in <windows.h>
a Sleep function and in <unistd.h>
an usleep function
Sleep take miliseconds and usleep take microseconds.