Alternatively to usleep()
, which is not defined in POSIX though it is evidently available on Linux, the POSIX standard defines:
nanosleep - high resolution sleep
#include <time.h>
int nanosleep(const struct timespec *rqtp, struct timespec *rmtp);
The nanosleep() function shall cause the current thread to be suspended from execution until either the time interval specified by the rqtp argument has elapsed or a signal is delivered to the calling thread, and its action is to invoke a signal-catching function or to terminate the process. The suspension time may be longer than requested because the argument value is rounded up to an integer multiple of the sleep resolution or because of the scheduling of other activity by the system. But, except for the case of being interrupted by a signal, the suspension time shall not be less than the time specified by rqtp, as measured by the system clock CLOCK_REALTIME.
The use of the nanosleep() function has no effect on the action or blockage of any signal.