GETRLIMIT(2) | Podręcznik programisty Linuksa | GETRLIMIT(2) |
getrlimit, getrusage, setrlimit - pobranie/ustawienie limitów i zużycia zasobów
#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);
Uwaga! To tłumaczenie może być nieaktualne!
getrlimit i setrlimit odpowiednio pobierają i ustawiają limity zasobów. Z każdym z zasobów stowarzyszone jest miękkie i sztywne ograniczenie zdefiniowane w strukturze rlimit (argument rlim w getrlimit() i setrlimit()):
struct rlimit {
rlim_t rlim_cur; /* ograniczenie miękkie */
rlim_t rlim_max; /* ograniczenie sztywne (górna
granica dla rlim_cur) */ };
Wartość RLIM_INFINITY określa brak ograniczenia dla zasobu (zarówno w strukturze zwracanej przez getrlimit(), jak i w strukturze przekazywanej do setrlimit()).
resource musi być jednym z:
RLIMIT_OFILE jest nazwą BSD dla RLIMIT_NOFILE.
getrusage zwraca bieżące zużycie zasobów dla who będącego albo RUSAGE_SELF albo RUSAGE_CHILDREN. W pierwszym przypadku zwracane jest zużycie zasobów przez bieżący proces, a w dugim - przez tych spośród jego potomków, którzy zakończyli działanie i na które to zakończenie oczekiwano.
struct rusage {
struct timeval ru_utime; /* użyty czas użytkownika */
struct timeval ru_stime; /* użyty czas systemowy */
long ru_maxrss; /* maximum resident set size */
long ru_ixrss; /* całkowity rozmiar pamięci dzielonej */
long ru_idrss; /* całkowity rozmiar danych niedzielonych */
long ru_isrss; /* całkowity rozmiar niedzielonego stosu */
long ru_minflt; /* page reclaims */
long ru_majflt; /* page faults */
long ru_nswap; /* swapy */
long ru_inblock; /* blokowe operacje wejścia */
long ru_oublock; /* blokowe operacje wyjścia */
long ru_msgsnd; /* wysłane komunikaty */
long ru_msgrcv; /* otrzymane komunikaty */
long ru_nsignals; /* otrzymane sygnały */
long ru_nvcsw; /* ochotnicze przełączenia kontekstu */
long ru_nivcsw; /* nieochotnicze przełączenia kontekstu */ };
Po pomyślnym zakończeniu zwracane jest 0. Po błędzie zwracane jest -1 i odpowiednio ustawiane errno.
SVr4, BSD 4.3
Włączenie <sys/time.h> nie jest obecnie wymagane, ale zwiększa przenośność. (Rzeczywiście, struct timeval jest zdefiniowane w <sys/time.h>.)
W Linuksie, jeśli rozporządzenie SIGCHLD ustawiono jako SIG_IGN, to zasobów wykorzystywane przez procesy potomne są automatycznie dołączane do wartości zwracanej przez RUSAGE_CHILDREN, pomimo że POSIX 1003.1-2001 jawnie tego zabrania.
Powyższa struktura została przejęta z BSD 4.3 Reno. Nie wszystkie pola mają znaczenie pod Linuksem. Obecnie (Linux 2.4) jedynie pola ru_utime, ru_stime, ru_minflt, ru_majflt i ru_nswap są pielęgnowane.
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)
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i może nie być aktualne. W razie zauważenia różnic między powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:
Prosimy o pomoc w aktualizacji stron man - więcej informacji można znaleźć pod adresem http://sourceforge.net/projects/manpages-pl/.
2002-07-09 | Linux |