.\" -*- coding: UTF-8 -*- .\" Copyright (C) Markus Kuhn, 1996 .\" and Copyright (C) Linux Foundation, 2008, written by Michael Kerrisk .\" .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\" 1996-04-10 Markus Kuhn .\" First version written .\" Modified, 2004-10-24, aeb .\" 2008-06-24, mtk .\" Minor rewrites of some parts. .\" NOTES: describe case where clock_nanosleep() can be preferable. .\" NOTES: describe CLOCK_REALTIME versus CLOCK_NANOSLEEP .\" Replace crufty discussion of HZ with a pointer to time(7). .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH nanosleep 2 "2 mai 2024" "Pages du manuel de Linux 6.8" .SH NOM nanosleep \- Sommeil en haute résolution .SH BIBLIOTHÈQUE Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP .P \fBint nanosleep(const struct timespec *\fP\fIdurée\fP\fB,\fP \fB struct timespec *_Nullable \fP\fIrem\fP\fB);\fP .fi .P .RS -4 Exigences de macros de test de fonctionnalités pour la glibc (consulter \fBfeature_test_macros\fP(7)) : .RE .P \fBnanosleep\fP(): .nf _POSIX_C_SOURCE >= 199309L .fi .SH DESCRIPTION \fBnanosleep\fP() suspend l'exécution du thread appelant jusqu'à ce que le temps indiqué dans \fI*durée\fP 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. .P Si l'appel est interrompu par un gestionnaire de signal \fBnanosleep\fP() renvoie \fB\-1\fP, renseigne \fIerrno\fP avec la valeur \fBEINTR\fP, et inscrit le temps restant dans la structure pointée par \fIrem\fP à moins que \fIrem\fP soit NULL. La valeur de \fI*rem\fP peut être utilisée pour rappeler à nouveau \fBnanosleep\fP() afin de terminer la pause (mais voir la section NOTES plus loin). .P La structure \fItimespec\fP est utilisée pour indiquer l'intervalle de temps en nanosecondes. .P La valeur du champ nanosecondes doit être dans l'intervalle [0 à 999\ 999\ 999]. .P Par rapport à \fBsleep\fP(3) et \fBusleep\fP(3), \fBnanosleep\fP() a les avantages suivants : il fournit une meilleure résolution pour indiquer la durée du sommeil ; POSIX.1 indique explicitement qu'il n'interagit avec aucun signal ; il permet enfin de continuer facilement un sommeil interrompu par un signal. .SH "VALEUR RENVOYÉE" L'appel \fBnanosleep\fP() renvoie \fB0\fP 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 \fB\-1\fP et \fIerrno\fP contient le code d'erreur. .SH ERREURS .TP \fBEFAULT\fP Problème lors de la copie d'information à partir de l'espace utilisateur. .TP \fBEINTR\fP La pause a été interrompue par un signal délivré au thread (voir \fBsignal\fP(7)). Le temps restant de sommeil a été inscrit dans \fI*rem\fP pour que le thread puisse terminer facilement son sommeil en rappelant \fBnanosleep\fP(). .TP \fBEINVAL\fP La valeur du champ \fItv_nsec\fP n'est pas dans l'intervalle 0 à 999\ 999\ 999 ou \fItv_sec\fP est négatif. .SH VERSIONS .\" See also http://thread.gmane.org/gmane.linux.kernel/696854/ .\" Subject: nanosleep() uses CLOCK_MONOTONIC, should be CLOCK_REALTIME? .\" Date: 2008-06-22 07:35:41 GMT POSIX.1 indique que \fBnanosleep\fP() doit mesurer le temps avec l'horloge \fBCLOCK_REALTIME\fP. Pourtant, Linux mesure le temps avec l'horloge \fBCLOCK_MONOTONIC\fP. Cela n'a probablement pas d'importance car la spécification POSIX.1 de \fBclock_settime\fP(2) indique que les modifications discontinues dans \fBCLOCK_REALTIME\fP n'affectent pas \fBnanosleep\fP() : .RS .P Configurer la valeur de l'horloge \fBCLOCK_REALTIME\fP avec \fBclock_settime\fP(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 \fBnanosleep\fP()\ ; ... En conséquence, ces services de temps doivent expirer lorsque la durée demandée est atteinte, indépendamment de l'ancienne ou la nouvelle valeur de l'horloge. .RE .SH STANDARDS POSIX.1\-2008. .SH HISTORIQUE POSIX.1\-2001. .P Pour gérer des 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), \fBnanosleep\fP() prend en charge des pauses jusqu'à 2 millisecondes, en étant occupé avec une précision d’une microseconde lorsqu'il est appelé à partir d'un thread ordonnancé par une politique en temps réel comme \fBSCHED_FIFO\fP ou \fBSCHED_RR\fP. Cette extension spéciale a été supprimée dans Linux 2.5.39, et n'est donc plus disponible dans les noyaux 2.6.0 et supérieur. .SH NOTES Si la \fIdurée\fP n'est pas un multiple exact de la granularité de l'horloge sous\-jacente (consultez \fBtime\fP(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. .P Le fait que \fBnanosleep\fP() endorme pour une durée relative peut être problématique si l'appel est relancé de manière répétée après avoir été interrompu par des signaux, puisque le temps entre les interruptions et les redémarrages de l'appel connaîtra une dérive lorsque le sommeil sera finalement achevé. Ce problème peut être évité en utilisant \fBclock_nanosleep\fP(2) avec une valeur de temps absolu. .SH BOGUES Si un programme captant les signaux et utilisant \fBnanosleep\fP() reçoit des signaux à très haute vitesse, les délais d'ordonnancement et les erreurs d'arrondi de calcul par le noyau de l'intervalle de sommeil et de la valeur de retour \fIremain\fP signifient que la valeur de \fIremain\fP peut \fIaugmenter\fP régulièrement au cours des redémarrages successifs de l'appel \fBnanosleep\fP(). Pour éviter de tels problèmes, utilisez \fBclock_nanosleep\fP(2) avec l'attribut \fBTIMER_ABSTIME\fP pour un sommeil d'une durée absolue. .P Dans Linux 2.4, si \fBnanosleep\fP() est arrêté par un signal (par exemple, \fBSIGTSTP\fP), l'appel échoue avec l'erreur \fBEINTR\fP après que le thread a repris avec un signal \fBSIGCONT\fP. Si l'appel système est, par la suite, relancé, le temps passé par le thread dans l'état arrêté \fIn'est pas\fP comptabilisé dans l'intervalle de sommeil. Ce problème est corrigé dans les noyaux Linux 2.6.0 et supérieurs. .SH "VOIR AUSSI" \fBclock_nanosleep\fP(2), \fBrestart_syscall\fP(2), \fBsched_setscheduler\fP(2), \fBtimer_create\fP(2), \fBsleep\fP(3), \fBtimespec\fP(3), \fBusleep\fP(3), \fBtime\fP(7) .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot et Jean-Philippe MENGUAL . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .