File: nanosleep.2

package info (click to toggle)
manpages-fr 0.5-3
  • links: PTS
  • area: main
  • in suites: slink
  • size: 4,236 kB
  • ctags: 4
  • sloc: makefile: 55
file content (143 lines) | stat: -rw-r--r-- 4,183 bytes parent folder | download | duplicates (2)
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).