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 144 145 146
|
.\" 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 \- Arrter l'excution pendant une dure donne.
.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'excution du programme en cours pour une dure valant
au moins
.IR *req .
Cette fonction peut se terminer plus tt que prvu si un signal a
t reu par le processus. Dans ce cas, elle renvoie \-1,
positionne \fIerrno\fR la valeur
.BR EINTR ,
et inscrit le temps restant dans la structure pointe par
.IR rem
a moins que
.I rem
soit
.BR NULL .
La valeur de
.I *rem
peut tre utilise pour rappeler nouveau
.B nanosleep
afin de terminer la pause.
La structure
.I timespec
est utilise pour indiquer l'intervalle de temps en nano-secondes.
Elle est dfinie 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 tre dans l'intervalle 0 999 999 999.
Par rapport
.BR sleep (3)
et
.BR usleep (3),
.B nanosleep
a l'avantage de n'affecter aucun signal, d'tre au standard POSIX,
de fournir une meilleure rsolution, et de permettre de continuer facilement
un sommeil interrompu par un signal.
.SH ERREURS
En cas d'erreur ou d'interruption, l'appel systme
.B nanosleep
renvoie \-1 et place dans
.I errno
une des valeurs suivantes :
.TP 0.8i
.B EINTR
La pause a t interrompue par un signal non-bloqu dlivr au
processus. Le temps restant de sommeil a t 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 999\ 999\ 999 ou
.I tv_sec
est ngatif.
.SH BUGS
L'implmentation actuelle de
.B nanosleep
est construite sur le mcanisme de temporisation du noyau, qui
dispose d'une rsolution valant 1/\fIHZ\fR\ s
(10\ ms sur Linux/i386 et 1\ ms sur Linux/Alpha).
Ainsi,
.B nanosleep
dormira toujours pour une dure au moins egale au temps spcifi,
mais il peut prendre jusqu' 10 ms de plus (i386) avant de faire
redmarrer le processus.
Pour la mme raison, la valeur retourne dans *\fIrem\fR en cas
d'interruption par un signal est arrondie au multiple suprieur
de 1/\fIHZ\fR\ s.
Certaines applications ncessitant des pauses plus prcises
(par exemple pour le contrle de priphriques matriels
avec un dlai critique),
.B nanosleep
peut aussi offrir des pauses avec une prcision plus leve.
Si le processus est mis sous le contrle d'un ordonnanceur
temps rel comme
.I SCHED_FIFO
ou
.IR SCHED_RR ,
les pauses jusqu'a 2\ ms seront effectues avec des boucles
d'une prcision de l'ordre de la micro-seconde.
.SH CONFORMIT
POSIX.1b (anciennement POSIX.4).
.SH "VOIR AUSSI"
.BR sleep (3),
.BR usleep (3),
.BR sched_setscheduler (2),
et
.BR timer_create (2).
.SH TRADUCTION
Christophe Blaess, 1997.
|