Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
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> >>.