File: getrlimit.2

package info (click to toggle)
manpages-es 1.55-4
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 7,472 kB
  • ctags: 6
  • sloc: sh: 1,349; makefile: 63
file content (297 lines) | stat: -rw-r--r-- 10,115 bytes parent folder | download | duplicates (4)
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
.\" Hey Emacs! This file is -*- nroff -*- source.
.\"
.\" Copyright (c) 1992 Drew Eckhardt, March 28, 1992
.\" Copyright (c) 2002 Michael Kerrisk
.\"
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one
.\" 
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\" 
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\"
.\" Modified by Michael Haardt <michael@moria.de>
.\" Modified Fri Jul 23 21:18:14 1993 by Rik Faith <faith@cs.unc.edu>
.\" Modified Jan 13, 1996 by Arnt Gulbrandsen <agulbra@troll.no>
.\" Modified Jan 22, 1996 by aeb, following a remark by
.\"          Tigran Aivazian <tigran@sco.com>
.\" Modified Apr 14, 1996 by aeb, following a remark by
.\"          Robert Bihlmeyer <robbe@orcus.ping.at>
.\" Modified Tue Oct 22 17:34:42 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified May  4, 2001 by aeb, following a remark by
.\"          Håvard Lygre <hklygre@online.no>
.\" Modified 17 Apr 2001 by Michael Kerrisk <mtk16@ext.canterbury.ac.nz>
.\" Modified 13 Jun 02, Michael Kerrisk <mtk16@ext.canterbury.ac.nz>
.\"     Added note on non-standard behaviour when SIGCHLD is ignored.
.\" Modified  9 Jul 02, Michael Kerrisk <mtk16@ext.canterbury.ac.nz>
.\"	Enhanced descriptions of 'resource' values for [gs]etrlimit()
.\"
.\" Revisado el Vie 2 de Oct de 1998 por Juan Piernas <piernas@ditec.um.es>
.\" Revisado el Mié 30 de Dic de 1998 por Juan Piernas <piernas@ditec.um.es>
.\" Revisado por Miguel Pérez Ibars <mpi79470@alu.um.es> el 18-noviembre-2004
.\"
.TH GETRLIMIT 2 "9 julio 2002" "Linux" "Manual del programador de Linux"
.SH NOMBRE
getrlimit, getrusage, setrlimit \- devuelve/establece el límite de recursos y
su utilización
.SH SINOPSIS
.B #include <sys/time.h>
.br
.B #include <sys/resource.h>
.br
.B #include <unistd.h>
.sp
.BI "int getrlimit(int " resource ", struct rlimit *" rlim );
.br
.BI "int getrusage(int " who ", struct rusage *" usage );
.br
.BI "int setrlimit(int " resource ", const struct rlimit *" rlim );
.SH DESCRIPCIÓN
.B getrlimit
y
.B setrlimit
devuelve / establece el límite de recursos, respectivamente.  
Cada recurso tiene asociado un límite flexible y otro estricto, tal como 
se define en la estructura
.B rlimit (el argumento
.I rlim
de las rutinas
.BR getrlimit "() y " setrlimit ()):
.PP
.in +0.5i
.nf
struct rlimit {
    rlim_t rlim_cur;   /* Límite flexible (Soft limit) */
    rlim_t rlim_max;   /* Límite estricto (Hard limit) 
                          (tope para rlim_cur) */
};

.fi
.in -0.5i
El límite flexible es el valor que impone el núcleo para
el recurso correspondiente.
El límite estricto actúa como un tope para el límite flexible:
un proceso no privilegiado puede solamente establecer su límite flexible
a un valor comprendido entre 0 y el límite estricto, y (irreversiblemente) menor
que su límite estricto.
Un proceso privilegiado puede hacer cualquier cambio sobre ambos valores límite.
.PP
El valor
.B RLIM_INFINITY
no impone ningún límite sobre un recurso (tanto en la estructura devuelta por
.BR getrlimit ()
como en la estructura pasada a
.BR setrlimit ()).
.PP
.I resource
debe ser uno de los siguientes valores:
.TP
.B RLIMIT_CPU
Tiempo de CPU en segundos.
Cuando el proceso alcanza el límite flexible, se le envía una señal
.B SIGXCPU.
La acción por defecto para esta señal es terminar el proceso.
Sin embargo, la señal puede ser atrapada, y el manejador puede devolver el
control al programa principal.
Si el proceso continúa consumiendo tiempo de CPU, se le enviará
.B SIGXCPU
una vez por segundo hasta que se alcance el límite estricto, momento
en el cual se le enviará la señal
.BR SIGKILL .
(Este último punto describe el comportamiento de Linux 2.2 y 2.4.
Las implementaciones varían en el tratamiento de los procesos que continúna
consumiendo tiempo de CPU después de alcanzar el límite flexible.
Las aplicaciones portables que necesiten atrapar esta señal deberían
realizar una terminación ordenada después de recibir la primera señal
.BR SIGXCPU .)
.TP
.B RLIMIT_DATA
El tamaño máximo del segmento de datos del proceso (datos inicializados,
no inicializados y el montículo).
Este límite afecta a las llamadas a
.BR brk "() and " sbrk (),
que fallan con el error
.B ENOMEM
al llegarse al límite flexible de este recurso.
.TP
.B RLIMIT_FSIZE
El tamaño máximo de los ficheros que puede crear el proceso.
Los intentos por sobrepasar este límite provocan la comunicación 
de una señal
.B SIGXFSZ.
Por defecto, esta señal termina el proceso, pero un proceso puede
atrapar esta señal en su lugar, en cuyo caso la llamada al sistema relevante
(p.e., 
.BR write "(), " truncate ())
falla con el error
.BR EFBIG .
.TP
.B RLIMIT_LOCKS
Un límite sobre el número combinado de bloqueos
.BR flock ()
y arrendamientos
.BR fcntl()
que este proceso puede establecer
(Linux 2.4 y posteriores).
.\" to be precise: Linux 2.4.0-test9 and later
.TP
.B RLIMIT_MEMLOCK
El número máximo de bytes de memoria virtual que pueden ser bloqueados
en RAM usando
.BR mlock "() y " mlockall ().
.TP
.B RLIMIT_NOFILE
Especifica un valor que es el número máximo de descriptor de fichero
que puede ser abierto por este proceso.
Los intentos de
.RB ( open "(), " pipe "(), " dup "(), etc.)"
por exceder este límite provocarán el error
.BR EMFILE .
.TP
.B RLIMIT_NPROC
El número máximo de procesos que pueden ser creados por el identificador
de usuario real del proceso invocador.
Al alcanzar este límite,
.BR fork ()
falla con el error
.BR EAGAIN .
.TP
.B RLIMIT_RSS
Especifica el límite (en páginas) del conjunto residente del proceso
(el número de páginas virtuales residentes en RAM).
Este límite sólo tiene efecto en Linux 2.4 en adelante, y sólo
afecta a las llamadas a
.BR madvise ()
especificando
.BR MADVISE_WILLNEED .
.TP
.B RLIMIT_STACK
El tamaño máximo de la pila del proceso, en bytes.
Al alcanzar este límite, se genera una señal
.B SIGSEGV.
Para manejar esta señal, un proceso debe emplear una pila de señales alternativa
.RB ( sigaltstack (2)).
.PP
.B RLIMIT_OFILE
es el nombre BSD para
.BR RLIMIT_NOFILE .
.PP
.B getrusage
devuelve la utilización actual de los recursos, para un \fIwho\fP
de cualquiera de los siguientes, bien
.B RUSAGE_SELF
oo
.BR RUSAGE_CHILDREN.
.PP 
.in +0.5i
.nf
struct rusage {
        struct timeval ru_utime; /* tiempo de usuario utilizado */
        struct timeval ru_stime; /* tiempo de sistema utilizado */
        long    ru_maxrss;       /* tamaño máximo de la parte
                                    establecida como residente */
        long    ru_ixrss;        /* tamaño total de la memoria
                                    compartida */
        long    ru_idrss;        /* tamaño total de la memoria
                                    no compartida */
        long    ru_isrss;        /* tamaño de pila no compartido */
        long    ru_minflt;       /* peticiones de página */
        long    ru_majflt;       /* fallos de página */
        long    ru_nswap;        /* intercambios */
        long    ru_inblock;      /* operaciones de entrada de
                                    bloques */
        long    ru_oublock;      /* operaciones de salida de
                                    bloques */
        long    ru_msgsnd;       /* mensajes enviados */
        long    ru_msgrcv;       /* mensajes recibidos */
        long    ru_nsignals;     /* señales recibidas */
        long    ru_nvcsw;        /* cambios de contexto
                                    voluntarios */
        long    ru_nivcsw;       /* cambios de contexto
                                    involuntarios */
};

.fi
.in -0.5i
.SH "VALOR DEVUELTO"
Si tiene éxito, devuelve cero. Si hay error, devuelve \-1, y
.I errno
toma el correspondiente valor.
.SH ERRORES
.TP
.B EFAULT
.I rlim
o
.I usage
apuntan fuera del espacio de direcciones accesible.
.TP
.B EINVAL
.BR getrlimit " o " setrlimit
es llamado con un \fIresource\fP erróneo, o \fBgetrusage\fP es llamado con un
\fIwho\fP erróneo.
.TP
.B EPERM
Un no-superusuario intenta utilizar \fBsetrlimit()\fP para incrementar el
límite `flexible' o `estricto' por encima del límite estricto actual, o un
superusuario intenta incrementar RLIMIT_NOFILE por encima del máximo actual
del núcleo.
.SH "CONFORME A"
SVr4, BSD 4.3
.SH NOTA
Incluir
.I <sys/time.h>
no es necesario actualmente, pero incrementa la transportabilidad.
(De hecho,
.I struct timeval
está definida en
.IR <sys/time.h> .)
.PP
En Linux, si la acción asociada a
.B SIGCHLD
es
.B SIG_IGN
los usos del recurso por los procesos hijo
son incluidos automáticamente en el valor devuelto por
.BR RUSAGE_CHILDREN ,
aunque POSIX 1003.1-2001 prohíbe ésto explícitamente.
.\" See the description of getrusage() in XSH.
.\" A similar statement was also in SUSv2.
.LP
La estructura de arriba fue tomada de BSD 4.3 Reno.
No todos los campos son significativos bajo Linux.
En la actualidad (Linux 2.4) sólo los campos
.BR ru_utime ,
.BR ru_stime ,
.BR ru_minflt ,
.BR ru_majflt ,
y
.BR ru_nswap
son mantenidos.
.SH "VÉASE TAMBIÉN"
.BR dup (2),
.BR fcntl (2),
.BR fork (2),
.BR mlock (2),
.BR mlockall (2),
.BR mmap (2),
.BR open (2),
.BR quotactl (2),
.BR sbrk (2),
.BR wait3 (2),
.BR wait4 (2),
.BR malloc (3),
.BR ulimit (3),
.BR signal (7)