Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       clock_nanosleep - Sommeil haute résolution avec horloge spécifique

SYNOPSIS

       #include <time.h>

       int clock_nanosleep(clockid_t clock_id, int flags,
                           const struct timespec *request,
                           struct timespec *remain);

       Lier avec -lrt (seulement pour les versions de glibc antérieures à 2.17).

   Exigences de macros de test de fonctionnalités pour la glibc (consultez
   feature_test_macros(7)) :

       clock_nanosleep() :
           _XOPEN_SOURCE >= 600 || _POSIX_C_SOURCE >= 200112L

DESCRIPTION

       Comme nanosleep(2), clock_nanosleep() permet au thread appelant de sommeiller pendant  une
       durée  indiquée  avec  une précision de la nanoseconde. Il diffère de nanosleep(2) dans le
       fait qu'il permet à l'appelant de choisir l'horloge avec laquelle la durée du sommeil sera
       mesurée et d'indiquer une valeur absolue ou relative pour la durée du sommeil.

       Les  valeurs  de  temps  passées  à  ou  retournées  par cet appel sont spécifiés dans des
       structures timespec définies comme suit :

           struct timespec {
               time_t tv_sec;        /* secondes */
               long   tv_nsec;       /* nanosecondes [0 .. 999999999] */
           };

       L'argument clock_id précise l'horloge avec laquelle sera mesurée la durée du sommeil.  Cet
       argument doit être l'une des valeurs suivantes :

       CLOCK_REALTIME   Une horloge temps réel configurable à l'échelle du système.

       CLOCK_MONOTONIC  Une  horloge  monotonique,  non configurable, mesurant le temps depuis un
                        instant du passé non spécifié qui ne change pas  après  le  démarrage  du
                        système.

       CLOCK_PROCESS_CPUTIME_ID
                        Une  horloge  configurable  par  processus  mesurant  le temps processeur
                        consommé par tous les threads du processus.

       Consultez clock_getres(2) pour plus d'informations sur ces horloges.

       Si flags vaut 0, la valeur indiquée dans request est interprétée comme une durée  relative
       à la valeur actuelle de l'horloge indiquée dans clock_id.

       Si  flags  vaut  TIMER_ABSTIME, request est interprété comme un temps absolu tel qu'il est
       mesuré par l'horloge clock_id. Si request est inférieur ou égal à la  valeur  actuelle  de
       l'horloge, clock_nanosleep() revient immédiatement sans suspendre le thread appelant.

       clock_nanosleep()  suspend  l'exécution  du  thread  appelant jusqu'à ce que soit le temps
       indiqué dans request se soit écoulé, soit un signal a été délivré provoquant l'appel  d'un
       gestionnaire de signal ou la fin du processus.

       Si  l'appel  a  été  interrompu par un gestionnaire de signal, clock_nanosleep() échoue et
       renseigne errno avec EINTR. De plus, si remain n'est  pas  NULL  et  si  flags  n'est  pas
       TIMER_ABSTIME,  il renvoie dans remain le temps de sommeil non consommé. Cette valeur peut
       être ensuite utilisée pour rappeler clock_nanosleep() et achever un sommeil (relatif).

VALEUR RENVOYÉE

       Après un sommeil complet de la durée souhaitée, clock_nanosleep() renvoie  0.  Si  l'appel
       système  est  interrompu par un gestionnaire de signal ou rencontre une erreur, il renvoie
       un des codes d'erreur positifs listés dans ERREURS.

ERREURS

       EFAULT request ou remain n'indique pas une adresse valide.

       EINTR  Le sommeil a été interrompu par un gestionnaire de signal.

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

       EINVAL clock_id  n'est  pas  valide. (CLOCK_THREAD_CPUTIME_ID n'est pas une valeur permise
              pour clock_id.)

VERSIONS

       L'appel système clock_nanosleep() a été introduit dans le noyau Linux dans sa version 2.6.
       La prise en charge dans la glibc est disponible depuis la version 2.1.

CONFORMITÉ

       POSIX.1-2001.

NOTES

       Si  la  durée  indiquée  dans  request  n'est  pas  un multiple exact de la granularité de
       l'horloge sous-jacente (consultez time(7)), la  durée  sera  alors  arrondie  au  multiple
       supérieur.  De plus, lorsque le sommeil sera achevé, il y a toujours un délai avant lequel
       le processeur redevienne libre pour exécuter le thread appelant.

       L'utilisation d'une temporisation absolue est utile pour prévenir les problèmes de  dérive
       de temps du type de ceux décrits dans nanosleep(2). (De tels problèmes sont exacerbés dans
       les programmes  qui  essaient  de  relancer  un  sommeil  relatif  interrompu  de  manière
       répétitive par des signaux.) Pour réaliser un sommeil qui s'affranchisse de ces problèmes,
       appelez clock_gettime(2) pour l'horloge souhaitée, ajoutez la durée voulue à la valeur  de
       temps renvoyée, appelez ensuite clock_nanosleep() avec l'attribut TIMER_ABSTIME.

       clock_nanosleep()  n'est  jamais relancé après avoir été interrompu par un gestionnaire de
       signal, que l'on ait ou non utilisé l'attribut SA_RESTART de sigaction(2).

       L'argument  remain  n'est  pas  utilisé  et  n'est  pas  nécessaire  lorsque  flags   vaut
       TIMER_ABSTIME.  (Un  sommeil  absolu  peut  être  relancé  en  utilisant  le même argument
       request.)

       POSIX.1 précise que clock_nanosleep() n'a aucun effet sur les dispositions de  signaux  ou
       sur le masque de signaux.

       POSIX.1  précise  qu'après  avoir  modifié  la  valeur  de  l'horloge  CLOCK_REALTIME avec
       clock_settime(2), la nouvelle valeur de  l'horloge  doit  être  utilisée  pour  déterminer
       l'heure à laquelle un thread bloqué avec un appel clock_nanosleep() absolu se réveillera ;
       si la nouvelle horloge fait  que  la  durée  du  sommeil  est  dépassée,  l'appel  système
       clock_nanosleep() revient immédiatement.

       POSIX.1  précise  que modifier la valeur de l'horloge CLOCK_REALTIME avec clock_settime(2)
       n'a pas d'effet sur un thread bloqué par un appel clock_nanosleep() absolu.

VOIR AUSSI

       clock_getres(2), nanosleep(2), restart_syscall(2), timer_create(2),  sleep(3),  usleep(3),
       time(7)

COLOPHON

       Cette  page  fait partie de la publication 3.65 du projet man-pages Linux. Une description
       du projet et des  instructions  pour  signaler  des  anomalies  peuvent  être  trouvées  à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis    2010,    cette   traduction   est   maintenue   à   l'aide   de   l'outil   po4a
       <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du  projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Alain Portal <http://manpagesfr.free.fr/> (2008).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>  ou  par  un  rapport  de  bogue   sur   le   paquet
       manpages-fr.

       Vous  pouvez  toujours  avoir  accès  à la version anglaise de ce document en utilisant la
       commande « man -L C <section> <page_de_man> ».