Provided by: manpages-pl-dev_20060617-3_all bug

NAZWA

       getrlimit,  getrusage, setrlimit - pobranie/ustawienie limitow i zuycia
       zasobow

SK/LADNIA

       #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);

OPIS

       getrlimit i setrlimit odpowiednio pobieraj i ustawiaj  limity  zasobow.
       Z  kadym  z  zasobow  stowarzyszone  jest mikkie i sztywne ograniczenie
       zdefiniowane  w  strukturze  rlimit  (argument  rlim  w  getrlimit()  i
       setrlimit()):

            struct rlimit {
                rlim_t rlim_cur;   /* ograniczenie mikkie */
                rlim_t rlim_max;   /* ograniczenie sztywne (gorna
                                      granica dla rlim_cur) */
            };

       Ograniczenie  mikkie  jest  wartoci  odpowiedniego zasoby wymuszn przez
       jdro.   Ograniczenie  sztywne   dziala   jak   warto   maksymalna   dla
       ograniczenia  mikkiego:  proces  nieuprzywilejowany  moe  sobie  ustawi
       ograniczenie mikkie tylko w zakresie od  0  do  ograniczenia  sztywnego
       oraz   (nieodwracalnie)   obniy   swoje  ograniczenie  sztywne.  Proces
       uprzywilejowany moe dowolnie zmienia kad z wartoci ograniczenia.

       Warto RLIM_INFINITY okrela brak  ograniczenia  dla  zasobu  (zarowno  w
       strukturze   zwracanej   przez   getrlimit(),   jak   i   w  strukturze
       przekazywanej do setrlimit()).

       resource musi by jednym z:

       RLIMIT_CPU
              Ograniczenie czasu procesora  (CPU)  w  sekundach.   Gdy  proces
              osiga  swoje  ograniczenie mikkie, jest do niego wysylany sygnal
              SIGXCPU.  Domyln reakcj na ten sygnal jest  przerwanie  procesu.
              Jednake,  sygnal  moe zosta przechwycony i procedura obslugi moe
              przekaza sterowanie to  programu  glownego.  Jeli  proces  nadal
              bdzie  zuywa zasoby procesora, bdzie do niego co sekund wysylany
              sygnal SIGXCPU a do osignicia ograniczenia sztywnego,  kiedy  to
              wysylane jest sygnal SIGKILL.  (Ostatni punkt opisuje zachowanie
              Linuksa  2.2  i  2.4.  W  zalenoci  od   implementacji   procesy
              kontynuujce zuywanie zasobow procesora po osigniciu ograniczenia
              mikkiego s  ronie  traktowane.  Aplikacje  przenone,  ktore  maj
              potrzeb  przechwycenia tego sygnalu, powinny zakoczy si w sposob
              kontrolowany w chwili otrzymaniu pierwszego SIGXCPU.)

       RLIMIT_DATA
              Maksymalny    rozmiar    segmentu    danych    procesu     (dane
              zainicjalizowane,    dane    niezainicjalizowane    i   sterta).
              Ograniczenie to wplywa na wywolania brk() and sbrk(), ktore kocz
              si  niepomylnie,  zglaszajc bld ENOMEM w momencie natrafienia na
              mikkie ograniczenie tego zasobu.

       RLIMIT_FSIZE
              Maksymalny rozmiar plikow tworzonych przrz  dany  proces.  Proba
              rozszerzenia  pliku  ponad  to ograniczenie koczy si otrzymaniem
              sygnalu SIGXFSZ.  Domylnie, sygnal ten koczy dzialanie  procesu,
              ale  proces  moe  go  przechwyci.  Wowczas  odpowiednia  funkcja
              systemowa (np.  write(), truncate()) koczy si bldem.  EFBIG.

       RLIMIT_LOCKS
              Ograniczenie lcznej liczby blokad  flock()  i  dzieraw  fcntl(),
              ktore proces moe ustanowi (Linux 2.4 i poniejsze).

       RLIMIT_MEMLOCK
              Maksymalna liczba bajtow pamici wirtualnej, ktore mona zablokowa
              w pamici RAM za pomoc mlock() i mlockall().

       RLIMIT_NOFILE
              Okrela warto o jeden wiksz  ni  maksymalna  liczba  deskryptorow
              plikow,  ktore dany proces moe otworzy. Proby wykonania (open(),
              pipe(), dup(), itd.)  przekraczajce t granic daj bld EMFILE.

       RLIMIT_NPROC
              Maksymalna  liczba  procesow,  ktore  mona  utworzy  dla  danego
              rzeczywistego  identyfikatora uytkownika procesu wywolujcego. Po
              napotkaniu tego ograniczenia, fork() koczy si bldem EAGAIN.

       RLIMIT_RSS
              Okrela ograniczenie iloci  rezydentnych  stron  procesu  (liczba
              stron  pamici  wirtualnej  pozostajcych  w RAM). Ograniczenie to
              dziala  poczwszy  od  Linuksa  2.4  i  dotyczy  jedynie   wywola
              madvise() z uyciem MADVISE_WILLNEED.

       RLIMIT_STACK
              Maksymalny  rozmiar stosu procesu w bajtach.  W chwili osignicia
              tego ograniczenia,  generowany  jest  sygnal  SIGSEGV.   W  celu
              obsluenia  tego  sygnalu proces musi zaloy alternatywny stos dla
              sygnalow (sigaltstack(2)).

       RLIMIT_OFILE jest nazw BSD dla RLIMIT_NOFILE.

       getrusage zwraca biece zuycie zasobow dla who bdcego  albo  RUSAGE_SELF
       albo  RUSAGE_CHILDREN.   W  pierwszym  przypadku  zwracane  jest zuycie
       zasobow przez biecy  proces,  a  w  dugim  -  przez  tych  sporod  jego
       potomkow,   ktorzy   zakoczyli  dzialanie  i  na  ktore  to  zakoczenie
       oczekiwano.

            struct rusage {
                struct timeval ru_utime; /* uyty czas uytkownika */
                struct timeval ru_stime; /* uyty czas systemowy */
                long   ru_maxrss;        /* maximum resident set size */
                long   ru_ixrss;         /* calkowity rozmiar pamici dzielonej */
                long   ru_idrss;         /* calkowity rozmiar danych niedzielonych */
                long   ru_isrss;         /* calkowity rozmiar niedzielonego stosu */
                long   ru_minflt;        /* page reclaims */
                long   ru_majflt;        /* page faults */
                long   ru_nswap;         /* swapy */
                long   ru_inblock;       /* blokowe operacje wejcia */
                long   ru_oublock;       /* blokowe operacje wyjcia */
                long   ru_msgsnd;        /* wyslane komunikaty */
                long   ru_msgrcv;        /* otrzymane komunikaty */
                long   ru_nsignals;      /* otrzymane sygnaly */
                long   ru_nvcsw;         /* ochotnicze przelczenia kontekstu */
                long   ru_nivcsw;        /* nieochotnicze przelczenia kontekstu */
            };

WARTO ZWRACANA

       Po pomylnym zakoczeniu zwracane jest 0. Po bldzie zwracane  jest  -1  i
       odpowiednio ustawiane errno.

B/LDY

       EFAULT rlim lub usage wskazuje poza dostpn przestrze adresow.

       EINVAL getrlimit  lub  setrlimit zostalo wywolane ze zlym resource, lub
              te getrusage zostalo wywolane ze zlym who.

       EPERM  Uytkownik nie bdcy superuytkownikiem probuje uywa setrlimit() do
              zwikszenia  mikich  lub  twardych limitow, lub te superuytkownik
              probuje zwikszy RLIMIT_NOFILE powyej maksimum jdra.

ZGODNE Z

       SVr4, BSD 4.3

UWAGA

       Wlczenie <sys/time.h> nie jest obecnie wymagane, ale zwiksza  przenono.
       (Rzeczywicie, struct timeval jest zdefiniowane w <sys/time.h>.)

       W  Linuksie,  jeli  rozporzdzenie  SIGCHLD  ustawiono  jako SIG_IGN, to
       zasobow wykorzystywane przez procesy potomne s  automatycznie  dolczane
       do  wartoci zwracanej przez RUSAGE_CHILDREN, pomimo e POSIX 1003.1-2001
       jawnie tego zabrania.

       Powysza struktura zostala przejta 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 pielgnowane.

ZOBACZ TAKE

       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)

INFORMACJE O T/LUMACZENIU

       Powysze tlumaczenie pochodzi z nieistniejcego ju  Projektu  Tlumaczenia
       Manuali  i  moe nie by aktualne. W razie zauwaenia ronic midzy powyszym
       opisem a rzeczywistym zachowaniem  opisywanego  programu  lub  funkcji,
       prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.