1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
.\" Hey Emacs! This file is -*- nroff -*- source.
.\"
.\" Copyright (C) Markus Kuhn, 1996
.\"
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, write to the Free
.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
.\" USA.
.\"
.\" 1996-04-10 Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
.\" First version written
.\"
.\" Traduction 14/10/1996 par Christophe Blaess (ccb@club-internet.fr)
.\" Mise a Jour 8/04/97
.TH NANOSLEEP 2 "8 Avril 1997" "Linux" "Manuel du programmeur Linux"
.SH NOM
nanosleep \- Arreter l'execution pendant une duree donnee.
.SH SYNOPSIS
.B #include <time.h>
.sp
\fBint nanosleep(const struct timespec *\fIreq\fB, struct timespec *\fIrem\fB);
.fi
.SH DESCRIPTION
.B nanosleep
suspend l'execution du programme en cours pour une duree valant
au moins
.IR *req .
Cette fonction peut se terminer plus tot que prevu si un signal a
ete recu par le processus. Dans ce cas, elle renvoie \-1,
positionne \fIerrno\fR a la valeur
.BR EINTR ,
et inscrit le temps restant dans la structure pointee par
.IR rem
a moins que
.I rem
soit
.BR NULL .
La valeur de
.I *rem
peut etre utilisee pour rappeler a nouveau
.B nanosleep
afin de terminer la pause.
La structure
.I timespec
est utilisee pour indiquer l'intervalle de temps en nano-secondes.
Elle est definie dans
.I <time.h>
et a la forme suivante
.sp
.RS
.nf
.ne 12
.ta 8n 16n 32n
struct timespec
{
time_t tv_sec; /* secondes */
long tv_nsec; /* nano-secondes */
};
.ta
.fi
.RE
.PP
La valeur du champ nano-seconde doit etre dans l'intervalle 0 a 999 999 999.
par rapport
.BR sleep (3)
et
.BR usleep (3),
.B nanosleep
a l'avantage de n'affecter aucun signal, d'etre au standard POSIX,
de fournir une meilleure resolution, et de permettre de continuer facilement
un sommeil interrompu par un signal.
.SH ERREURS
En cas d'erreur ou d'interruption, l'appel systeme
.B nanosleep
renvoie \-1 et place dans
.I errno
une des valeurs suivantes :
.TP 0.8i
.B EINTR
La pause a ete interrompue par un signal non-bloque delivre au
processus. Le temps restant de sommeil a ete inscrit dans
*\fIrem\fR pour que le processus puisse terminer facilement son
sommeil.
.TP
.B EINVAL
La valeur du champ
.I tv_nsec
n'est pas dans l'intervalle 0 a 999\ 999\ 999 ou
.I tv_sec
est negatif.
.SH BUGS
L'implementation actuelle de
.B nanosleep
est construite sur le mecanisme de temporisation du noyau, qui
dispose d'une resolution valant 1/\fIHZ\fR\ s
(10\ ms sur Linux/i386 et 1\ ms sur Linux/Alpha).
Ainsi,
.B nanosleep
dormira toujours pour une duree au moins egale au temps specifie,
mais il peut prendre jusqu'a 10 ms de plus (i386) avant de faire
redemarrer le processus.
Pour la meme raison, la valeur retournee dans *\fIrem\fR en cas
d'interruption par un signal est arrondie au multiple superieur
de 1/\fIHZ\fR\ s.
Certaines applications necessitant des pauses plus precises
(par exemple pour le controle de peripheriques materiels
avec un delai critique),
.B nanosleep
peut aussi offrir des pauses avec une precision plus elevee.
Si le processus est mis sous le controle d'un ordonnanceur
temps reel comme
.I SCHED_FIFO
ou
.IR SCHED_RR ,
les pauses jusqu'a 2\ ms seront effectuees avec des boucles
d'une precision de l'ordre de la micro-seconde.
.SH CONFORMITE
POSIX.1b (anciennement POSIX.4).
.SH "VOIR AUSSI"
.BR sleep (3),
.BR usleep (3),
.BR sched_setscheduler (2),
et
.BR timer_create (2).
|