If the
nanosleep() function returns because the requested time has elapsed, the value returned will be zero.
If the
nanosleep() function returns due to the delivery of a signal, the value returned will be the -1, and the global variable
errno will be set to indicate the interruption. If
rmtp is non-
NULL, the timespec structure it references is updated to contain the unslept amount (the request time minus the time actually slept).