Provided by: manpages-fr-dev_4.23.1-1_all bug

NOM

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

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc), depuis la glibc 2.17

       Avant la glibc 2.17, bibliothèque de temps réel (librt, -lrt)

SYNOPSIS

       #include <time.h>

       int clock_nanosleep(clockid_t clockid, int flags,
                           const struct timespec *t,
                           struct timespec *_Nullable remain);

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

       clock_nanosleep() :
           _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 l’ordre 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  et  renvoyées  par  cet  appel  sont  spécifiées  dans  des
       structures timespec(3).

       L'argument  clockid  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_TAI (depuis Linux 3.10)
              Horloge dérivée d'une pendule mais qui compte les secondes intercalaires.

       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_BOOTTIME (depuis Linux 2.6.39)
              Identique  à  CLOCK_MONOTONIC,  mais elle englobe toute la durée durant laquelle le
              système est en veille.

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

       Voir  clock_getres(2) pour plus de détails sur ces horloges. En outre, les identifiants de
       l'horloge du processeur renvoyés par  clock_getcpuclockid(3)  et  pthread_getcpuclockid(3)
       peuvent aussi être passés en tant que clockid.

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

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

       clock_nanosleep() suspend l'exécution du thread appelant jusqu'à  ce  que  soit  le  temps
       indiqué  dans  t  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 t ou remain n'indique pas une adresse valable.

       EINTR  Le sommeil a été interrompu par un gestionnaire de signal ; voir signal(7).

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

       EINVAL clockid n'est pas valable. (CLOCK_THREAD_CPUTIME_ID n'est pas  une  valeur  permise
              pour clockid.)

       ENOTSUP
              Le noyau ne prend pas en charge le sommeil avec cette clockid.

STANDARDS

       POSIX.1-2008.

HISTORIQUE

       POSIX.1-2001. Linux 2.6, glibc 2.1.

NOTES

       Si  la  durée  indiquée  dans t 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 t.)

       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  valeur  de  la  nouvelle  horloge  dépasse  la  durée du sommeil, l'appel système,
       clock_nanosleep() renvoie 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() relatif.

VOIR AUSSI

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

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.rafin@laposte.net>, Thierry
       Vignaud <tvignaud@mandriva.com>, François Micaux, Alain  Portal  <aportal@univ-montp2.fr>,
       Jean-Philippe    Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-
       luc.coulon@wanadoo.fr>,   Julien    Cristau    <jcristau@debian.org>,    Thomas    Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,  Denis
       Barbier  <barbier@debian.org>,  David  Prévot <david@tilapin.org> et Jean-Philippe MENGUAL
       <jpmengual@debian.org>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.