| nanosleep | |||
Nomnanosleep - Arrêter l'exécution pendant une durée donnée.Synopsis#include <time.h>
int nanosleep(const struct timespec
*req, struct timespec *rem);
La structure timespec est utilisée pour indiquer l'intervalle de temps en nano-secondes. Elle est définie dans <time.h> et a la forme suivante
La valeur du champ nano-seconde doit être dans l'intervalle 0 à 999 999 999. Par rapport à sleep(3) et usleep(3) , nanosleep a l'avantage de n'affecter aucun signal, d'être au standard POSIX, de fournir une meilleure résolution, et de permettre de continuer facilement un sommeil interrompu par un signal. ErreursEn cas d'erreur ou d'interruption, l'appel système nanosleep renvoie -1 et place dans errno une des valeurs suivantes :
BoguesL'implémentation actuelle de nanosleep est construite sur le mécanisme de temporisation du noyau, qui dispose d'une résolution valant 1/HZ s (10 ms sur Linux/i386 et 1 ms sur Linux/Alpha). Ainsi, nanosleep dormira toujours pour une durée au moins egale au temps spécifié, mais il peut prendre jusqu'à 10 ms de plus (i386) avant de faire redémarrer le processus. Pour la même raison, la valeur retournée dans *rem en cas d'interruption par un signal est arrondie au multiple supérieur de 1/HZ s.Certaines applications nécessitant des pauses plus précises (par exemple pour le contrôle de périphériques matériels avec un délai critique), nanosleep peut aussi offrir des pauses avec une précision plus élevée. Si le processus est mis sous le contrôle d'un ordonnanceur temps réel comme SCHED_FIFO ou SCHED_RR, les pauses jusqu'a 2 ms seront effectuées avec des boucles d'une précision de l'ordre de la micro-seconde.
ConformitéPOSIX.1b (anciennement POSIX.4).Voir Aussisleep(3) , usleep(3) , sched_setscheduler(2) , et timer_create(2) .
TraductionChristophe Blaess, 1997.
|