NANOSLEEP(2)       Manuel du programmeur Linux       NANOSLEEP(2)


NOM
       nanosleep  - Arrêter l'exécution pendant une durée donnée.

SYNOPSIS
       #include <time.h>

       int nanosleep(const struct timespec *req, struct  timespec
       *rem);

DESCRIPTION
       nanosleep  suspend  l'exécution du programme en cours pour
       une durée valant au moins *req.  Cette  fonction  peut  se
       terminer plus tôt que prévu si un signal a été reçu par le
       processus. Dans ce cas, elle renvoie -1, positionne  errno
       à  la  valeur  EINTR,  et inscrit le temps restant dans la
       structure pointée par rem a moins que rem soit  NULL.   La
       valeur  de *rem peut être utilisée pour rappeler à nouveau
       nanosleep afin de terminer la pause.

       La structure timespec est utilisée pour indiquer  l'inter­
       valle  de  temps  en nano-secondes.  Elle est définie dans
       <time.h> et a la forme suivante

              struct timespec
              {
                      time_t  tv_sec;         /* secondes */
                      long    tv_nsec;        /* nano-secondes */
              };

       La valeur du champ nano-seconde doit  être  dans  l'inter­
       valle 0 à 999 999 999.

       Par  rapport  à sleep(3) et usleep(3), nanosleep a l'avan­
       tage 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.

ERREURS
       En   cas   d'erreur  ou  d'interruption,  l'appel  système
       nanosleep renvoie -1 et place dans errno une  des  valeurs
       suivantes :

       EINTR   La  pause  a  été  interrompue  par un signal non-
               bloqué délivré au processus. Le temps  restant  de
               sommeil  a  été inscrit dans *rem pour que le pro­
               cessus puisse terminer facilement son sommeil.

       EINVAL  La valeur du champ tv_nsec n'est pas dans l'inter­
               valle 0 à 999 999 999 ou tv_sec est négatif.

BUGS
       L'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                      8 Avril 1997                         1





NANOSLEEP(2)       Manuel du programmeur Linux       NANOSLEEP(2)


       Linux/Alpha).  Ainsi, nanosleep dormira toujours pour  une
       durée au moins egale au temps spécifié, mais il peut pren­
       dre 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 AUSSI
       sleep(3), usleep(3), sched_setscheduler(2), et  timer_cre­
       ate(2).


TRADUCTION
       Christophe Blaess, 1997.






























Linux                      8 Avril 1997                         2