table of contents
other sections
NANOSLEEP(2) | Manuel du programmeur Linux | NANOSLEEP(2) |
NOM¶
nanosleep - Sommeil en haute résolutionSYNOPSIS¶
#include <time.h>Exigences de macros de test de fonctionnalités pour la glibc (consultez feature_test_macros(7)) :
DESCRIPTION¶
nanosleep() suspend l'exécution du thread appelant jusqu'à ce que le temps indiqué dans *req ait expiré, ou que la réception d'un signal ait déclenché l'invocation d'un gestionnaire dans le thread appelant ou ait terminé le processus.struct timespec { time_t tv_sec; /* secondes */ long tv_nsec; /* nanosecondes */ };
La valeur du champ nanosecondes doit être dans l'intervalle 0 à 999 999 999.
VALEUR RENVOYÉE¶
L'appel nanosleep() renvoie 0 s'il réussit à suspendre l'exécution pour la durée demandée. Si l'appel est interrompu par un gestionnaire de signal ou rencontre une erreur, il renvoie -1 et errno contient le code d'erreur.ERREURS¶
- EFAULT
- Problème lors de la copie d'information à partir de l'espace utilisateur.
- EINTR
- La pause a été interrompue par un signal non bloqué délivré au thread. Le temps restant de sommeil a été inscrit dans *rem pour que le thread puisse terminer facilement son sommeil en rappelant nanosleep().
- EINVAL
- La valeur du champ tv_nsec n'est pas dans l'intervalle 0 à 999 999 999 ou tv_sec est négatif.
CONFORMITɶ
POSIX.1-2001.NOTES¶
Si l'intervalle indiqué dans req n'est pas un multiple exact de la granularité de l'horloge sous-jacente (consultez time(7)), l'intervalle est arrondi au multiple supérieur. De plus, après que le sommeil est achevé, il y a toujours un délai avant que le processeur ne redevienne complètement disponible pour le thread appelant.
Configurer la valeur de l'horloge CLOCK_REALTIME avec
clock_settime(2) ne doit pas avoir d'effet sur les threads bloqués
attendant un service de temps relatif basé sur cette horloge. Cela inclut
la fonction nanosleep() ; ...En conséquence, ces services de
temps doivent expirer lorsque la durée relative demandée est
atteinte, indépendamment de l'ancienne ou la nouvelle valeur de
l'horloge.
Ancien comportement¶
Certaines applications nécessitant des pauses plus précises (par exemple pour le contrôle de périphériques matériels avec un délai critique), nanosleep() peut aussi offrir des pauses avec une précision plus élevée. Si le thread est mis sous le contrôle d'une politique d'ordonnancement temps réel comme SCHED_FIFO ou SCHED_RR, les pauses jusqu'à 2 ms seront effectuées avec des boucles actives d'une précision de l'ordre de la microseconde. Cette extension spéciale a été supprimée dans le noyau 2.5.39, et est donc toujours présente dans les noyaux 2.4, mais pas dans les noyaux 2.6.BOGUES¶
Dans Linux 2.4, si nanosleep() est arrêté par un signal (par exemple, SIGTSTP), l'appel échoue avec l'erreur EINTR après que le thread a repris avec un signal SIGCONT. Si l'appel système est, par la suite, relancé, le temps passé par le thread dans l'état arrêté n'est pas comptabilisé dans l'intervalle de sommeil.VOIR AUSSI¶
clock_nanosleep(2), sched_setscheduler(2), timer_create(2), sleep(3), usleep(3), time(7)COLOPHON¶
Cette page fait partie de la publication 3.44 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/>. Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009). 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> ».19 janvier 2009 | Linux |