Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       clock_nanosleep - Sommeil haute resolution avec horloge specifique

SYNOPSIS

       #include <time.h>

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

       Effectuez l'edition des liens avec l'option -lrt.

   Exigences de macros de test de fonctionnalites pour la glibc (consultez
   feature_test_macros(7)) :

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

DESCRIPTION

       Comme nanosleep(2), clock_nanosleep() permet a l'appelant de sommeiller
       pendant  une  duree  indiquee  avec une precision de la nanoseconde. Il
       differe de nanosleep(2) dans le  fait  qu'il  permet  a  l'appelant  de
       choisir  l'horloge  avec  laquelle  la duree du sommeil sera mesuree et
       d'indiquer une valeur absolue ou relative pour la duree du sommeil.

       Les valeurs de temps  passees  a  ou  retournees  par  cet  appel  sont
       specifies dans des structures timespec definies comme suit :

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

       L'argument  clock_id  precise  l'horloge  avec laquelle sera mesuree la
       duree du sommeil. Cet argument doit etre l'une des valeurs suivantes :

       CLOCK_REALTIME   Une horloge temps reel  configurable  a  l'echelle  du
                        systeme.

       CLOCK_MONOTONIC  Une horloge monotonique, non configurable, mesurant le
                        temps depuis un instant du passe non specifie  qui  ne
                        change pas apres le demarrage du systeme.

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

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

       Si  flags vaut 0, la valeur indiquee dans request est interpretee comme
       une duree relative a la valeur  actuelle  de  l'horloge  indiquee  dans
       clock_id.

       Si  flags  vaut  TIMER_ABSTIME,  request  est interprete comme un temps
       absolu tel qu'il est mesure par  l'horloge  clock_id.  Si  request  est
       inferieur  ou egal a la valeur actuelle de l'horloge, clock_nanosleep()
       revient immediatement sans suspendre le thread appelant.

       clock_nanosleep() suspend l'execution du thread appelant jusqu'a ce que
       soit le temps indique dans request se soit ecoule, soit un signal a ete
       delivre provoquant l'appel d'un gestionnaire de signal  ou  la  fin  du
       processus.

       Si   l'appel   a   ete   interrompu  par  un  gestionnaire  de  signal,
       clock_nanosleep() echoue 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 consomme. Cette  valeur  peut  etre
       ensuite  utilisee pour rappeler clock_nanosleep() et achever un sommeil
       (relatif).

VALEUR RENVOY'EE

       Apres un sommeil  complet  de  la  duree  souhaitee,  clock_nanosleep()
       renvoie  0.  Si  l'appel  systeme est interrompu par un gestionnaire de
       signal ou rencontre une  erreur,  il  renvoie  un  des  codes  d'erreur
       positifs listes dans ERREURS.

ERREURS

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

       EINTR  Le sommeil a ete interrompu par un gestionnaire de signal.

       EINVAL La  valeur  du  champ  tv_nsec  n'est  pas dans l'intervalle 0 a
              999 999 999 ou tv_sec est negatif.

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

VERSIONS

       L'appel  systeme  clock_nanosleep() a ete 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'E

       POSIX.1-2001.

NOTES

       Si  la  duree  indiquee  dans request n'est pas un multiple exact de la
       granularite de l'horloge sous-jacente  (consultez  time(7)),  la  duree
       sera  alors arrondie au multiple superieur. De plus, lorsque le sommeil
       sera acheve, il y a  toujours  un  delai  avant  lequel  le  processeur
       redevienne libre pour executer le thread appelant.

       L'utilisation  d'une  temporisation absolue est utile pour prevenir les
       problemes de derive de temps du type de ceux decrits dans nanosleep(2).
       (De  tels  problemes sont exacerbes dans les programmes qui essaient de
       relancer un sommeil relatif interrompu de maniere  repetitive  par  des
       signaux.) Pour realiser un sommeil qui s'affranchisse de ces problemes,
       appelez clock_gettime(2) pour l'horloge  souhaitee,  ajoutez  la  duree
       voulue a la valeur de temps renvoyee, appelez ensuite clock_nanosleep()
       avec l'attribut TIMER_ABSTIME.

       clock_nanosleep() n'est jamais relance apres avoir ete  interrompu  par
       un  gestionnaire  de  signal,  que  l'on  ait ou non utilise l'attribut
       SA_SIGACTION de sigaction(2).

       L'argument remain n'est pas utilise et  n'est  pas  necessaire  lorsque
       flags  vaut  TIMER_ABSTIME.  (Un  sommeil  absolu  peut etre relance en
       utilisant le meme argument request.)

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

       POSIX.1   precise   qu'apres  avoir  modifie  la  valeur  de  l'horloge
       CLOCK_REALTIME avec clock_settime(2), la nouvelle valeur  de  l'horloge
       doit  etre utilisee pour determiner l'heure a laquelle un thread bloque
       avec un appel clock_nanosleep() absolu se reveillera ; si  la  nouvelle
       horloge  fait  que  la  duree  du sommeil est depassee, l'appel systeme
       clock_nanosleep() revient immediatement.

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

VOIR AUSSI

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

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.27 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       etre       trouvees      a      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

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

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

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

       Vous  pouvez  toujours avoir acces a la version anglaise de ce document
       en utilisant la commande << man -L C <section> <page_de_man> >>.