nanosleep - high resolution sleep
#include <time.h>
nanosleep() suspends the current thread from execution until either the time interval specified by rqtp has elapsed. 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. The suspension time will not be less than the time specified by rqtp, as measured by the system clock, CLOCK_REALTIME.
If nanosleep() returns because the requested time has elapsed, it returns 0. If rmtp is non-NULL, the timespec structure referenced by rmtp will be updated to contain the remaining amount of time between rqtp and the time actually slept.
If any of the following error conditions occur, nanosleep() returns -1 and sets errno to indicate the error condition.