Man page - clock_nanosleep(2)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

clock_nanosleep

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
STANDARDS
HISTORIQUE
NOTES
VOIR AUSSI
TRADUCTION

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 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 .