C standard library :: unistd
usleep - fritag eksekvering for et tidsinterval
Denne funktion skal bevirke at den kalende process eller thread fritages fra eksekvering indtil enten antallet af mikrosekunder specificeret i parameteren useconds er udløbet eller et signal er leveret til den kalende thread med et formål at aktivere en funktion der fanger et signal eller et signal der skal terminere processen. Tiden fritagelsen gælder kan blive længere end specificeret pga. planlægningen af andre aktiviteter af systemet.
Hvis SIGNALRM er genereret for den kalende process under eksekveringen af sleep() og hvis SIGNALRM er ignoreret eller blokeret at levere, er det uvist om sleep() returnerer når SIGNALRM signalet er planlagt. Hvis signalet er blokeret er det ligeledes uvist om hvorvidt signalet forbliver i venteposition efter sleep() returnerer eller signalet er afvist.
Parameteren useconds skal være mindre end en million. Hvis værdien af useconds er 0 har kaldet ingen effekt.
Hvis et SIGNALRM signal er genereret for den kalende process under eksekvering af usleep(), undtagen som et resultat af kald før til alarm() og hvis signalet ikke er ignoreret eller blokeret for levering, er det uvist om signalet har anden effekt andet end at forårsage usleep() til at returnere.
Hvis en signal-fangende funktion afbryder usleep() og undersøger eller ændrer enten tiden et SIGNALRM er planlagt at skulle generere en handling associeret med SIGNALRM signalet, eller om det SIGNALRM signal er blokeret fra levereting, er resultatet uvist.
Hvis en signal-fangende funktion afbryder usleep() og kalder siglongjmp() eller longjmp() for at restaurere et miljø gemt forud for sleep() kaldet, vil handlingen associeret med SIGNALRM signalet og tiden som et SIGNALRM signal er planlagt at skulle genereres er uvist. Det er også uvist om SIGNALRM signalet er blokeret, med mindre processens signal maske er restaureret som en del af miljøet.
Forskelle i implementeringen kan give begrænsninger til opløsningen af tids værdier. For hver tids-internal der ikke møder den aktuelle implementerings opløsningen bliver tids-intervallet afrundet op til nærmeste supporterede værdi.
Samkørsel med usleep() og enhver af følgende er ikke specificeret:
nanosleep()
setitimer()
timer_create()
timer_delete()
timer_getoverrun()
timer_gettime()
timer_settime()
ualarm()
sleep()
Funktionen behøver ikke være reentrant. Funktioner der ikke kræves at være reentrant kræves heller ikke at være thread-safe.
Return værdi
Hvis usleep() returnerer fordi tiden er udløbet skal værdien returneret være 0. Ellers returnerer den -1 og sætter errno til indikation af årsagen.
Fejl
Funktionen kan fejle hvis:
- [EINVAL]
- Tids-intervallet angivet en million eller mere mikrosekunder.