HP-UX Reference (11i v1 00/12) - 2 System Calls (vol 5)
__________________________________________________________________________________________________________________________________________________________________________________________________
__________________________________________________________________________________________________________________________________________________________________________________________________
STANDARD Printed by: Nora Chuang [nchuang] STANDARD
/build/1111/BRICK/man2/!!!intro.2
________________________________________________________________
___ ___
u
usleep(2) usleep(2)
NAME
usleep - suspend execution for an interval
SYNOPSIS
#include <unistd.h>
int usleep(useconds_t useconds);
DESCRIPTION
The usleep() function will cause the calling thread to be suspended from execution until either the
number of real-time microseconds specified by the argument useconds 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 due to the scheduling of other activities by the system,
or because of the time spent in processing the call.
The useconds argument must be less than 1,000,000. If the value of useconds is 0, then the call has no
effect.
If a SIGALRM signal is generated for the calling process during execution of
usleep() and if the
SIGALRM signal is being ignored or blocked from delivery, it is unspecified whether
usleep() returns
when the
SIGALRM signal is scheduled; if the signal is being blocked, it is also unspecified whether it
remains pending after usleep() returns or it is discarded.
If a SIGALRM signal is generated for the calling process during execution of usleep(), except as a result
of a prior call to
alarm(), and if the SIGALRM signal is not being ignored or blocked from delivery, it is
unspecified whether that signalhas any effect other than causing usleep() to return.
If a signal-catching function interrupts
usleep() and examines or changes either the time a SIGALRM is
scheduled to be generated, the action associated with the
SIGALRM signal, or whether the SIGALRM sig-
nal is blocked from delivery, the results are unspecified.
If a signal-catching function interrupts
usleep() and calls siglongjmp() or longjmp() to restore
an environment saved prior to the usleep() call, the action associated with the SIGALRM signal and the
time at which a
SIGALRM signal is scheduled to be generated are unspecified, it is also unspecified
whether the SIGALRM signal is blocked, unless the process’s signal mask is restored as part of the environ-
ment.
Implementations may place limitations on the granularity of timer values. For each interval timer, if the
requested timer value requires a finer granularity than the implementation supports, the actual timer
value will be rounded up to the next supported value.
Interactions between usleep() and any of the following are unspecified: nanosleep() , setiti-
mer()
, timer_create(),
timer_delete(), timer_getoverrun(), timer_gettime()
,
timer_settime(), ualarm(),
sleep().
RETURN VALUE
On successful completion,
usleep() returns 0. Otherwise, it returns −1 and sets errno to indicate the
error.
ERRORS
The usleep() function may fail if:
[EINVAL] The time interval specified 1,000,000 or more microseconds.
APPLICATION USAGE
The usleep() function is included for its historical usage. The setitimer() function is preferred over
this function. Multi-threaded applications are recommended to use nanosleep() instead of usleep().
usleep() is also a thread canceling point.
SEE ALSO
alarm(2), getitimer(2), nanosleep(2), sigaction(2), sleep(3C), timer_create(2), timer_delete(2),
timer_getoverrun(2), timer_gettime(2), timer_settime(2), <unistd.h>.
CHANGE HISTORY
First released in Issue 4, Version 2.
HP-UX Release 11i: December 2000 − 1 − Section 2−−439
___
___