| GETRLIMIT(2) | Manual del programador de Linux | GETRLIMIT(2) |
getrlimit, getrusage, setrlimit - devuelve/establece el límite de recursos y su utilización
#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
int getrlimit(int resource, struct rlimit
*rlim);
int getrusage(int who, struct rusage
*usage);
int setrlimit(int resource, const struct rlimit
*rlim);
getrlimit y 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 rlimit (el argumento rlim de las rutinas getrlimit() y setrlimit()):
struct rlimit {
rlim_t rlim_cur; /* Límite flexible (Soft limit) */
rlim_t rlim_max; /* Límite estricto (Hard limit)
(tope para rlim_cur) */
};
El valor RLIM_INFINITY no impone ningún límite sobre un recurso (tanto en la estructura devuelta por getrlimit() como en la estructura pasada a setrlimit()).
resource debe ser uno de los siguientes valores:
RLIMIT_OFILE es el nombre BSD para RLIMIT_NOFILE.
getrusage devuelve la utilización actual de los recursos, para un who de cualquiera de los siguientes, bien RUSAGE_SELF oo RUSAGE_CHILDREN.
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 */
};
Si tiene éxito, devuelve cero. Si hay error, devuelve -1, y errno toma el correspondiente valor.
SVr4, BSD 4.3
Incluir <sys/time.h> no es necesario actualmente, pero incrementa la transportabilidad. (De hecho, struct timeval está definida en <sys/time.h>.)
En Linux, si la acción asociada a SIGCHLD es SIG_IGN los usos del recurso por los procesos hijo son incluidos automáticamente en el valor devuelto por RUSAGE_CHILDREN, aunque POSIX 1003.1-2001 prohíbe ésto explícitamente.
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 ru_utime, ru_stime, ru_minflt, ru_majflt, y ru_nswap son mantenidos.
dup(2), fcntl(2), fork(2), mlock(2), mlockall(2), mmap(2), open(2), quotactl(2), sbrk(2), wait3(2), wait4(2), malloc(3), ulimit(3), signal(7)
| 9 julio 2002 | Linux |