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.
.\"
.\" {PTM/PB/0.1/02-03-1999/"ustaw/pobierz limity zasobów i zużycie"}
.\" Translation 1999 Przemek Borys <pborys@dione.ids.pl>
.\" Last update: A. Krzysztofowicz <ankry@mif.pg.gda.pl>, Aug 2002,
.\" manpages 1.52
.\"
.\" 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()
.\"
.TH GETRLIMIT 2 2002-07-09 "Linux" "Podręcznik programisty Linuksa"
.SH NAZWA
getrlimit, getrusage, setrlimit \- pobranie/ustawienie limitów i zużycia zasobów
.SH SKŁADNIA
.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 OPIS
\fI Uwaga! To tłumaczenie może być nieaktualne!\fP
.PP
.B getrlimit
i
.B setrlimit
odpowiednio pobierają i ustawiają limity zasobów.
Z każdym z zasobów stowarzyszone jest miękkie i sztywne ograniczenie
zdefiniowane w strukturze
.B rlimit
(argument
.I rlim
w
.BR getrlimit "() i " setrlimit ()):
.PP
.in +0.5i
.nf
struct rlimit {
rlim_t rlim_cur; /* ograniczenie miękkie */
rlim_t rlim_max; /* ograniczenie sztywne (górna
granica dla rlim_cur) */
};
.fi
.in -0.5i
Ograniczenie miękkie jest wartością odpowiedniego zasoby wymuszną przez jądro.
Ograniczenie sztywne działa jak wartość maksymalna dla ograniczenia miękkiego:
proces nieuprzywilejowany może sobie ustawić ograniczenie miękkie tylko
w zakresie od 0 do ograniczenia sztywnego oraz (nieodwracalnie) obniżyć
swoje ograniczenie sztywne. Proces uprzywilejowany może dowolnie zmieniać
każdą z wartości ograniczenia.
.PP
Wartość
.B RLIM_INFINITY
określa brak ograniczenia dla zasobu (zarówno w strukturze zwracanej przez
.BR getrlimit (),
jak i w strukturze przekazywanej do
.BR setrlimit ()).
.PP
.I resource
musi być jednym z:
.TP
.B RLIMIT_CPU
Ograniczenie czasu procesora (CPU) w sekundach.
Gdy proces osiąga swoje ograniczenie miękkie, jest do niego wysyłany sygnał
.BR SIGXCPU .
Domyślną reakcją na ten sygnał jest przerwanie procesu.
Jednakże, sygnał może zostać przechwycony i procedura obsługi może przekazać
sterowanie to programu głównego. Jeśli proces nadal będzie zużywać zasoby
procesora, będzie do niego co sekundę wysyłany sygnał
.B SIGXCPU
aż do osiągnięcia ograniczenia sztywnego, kiedy to wysyłane jest sygnał
.BR SIGKILL .
(Ostatni punkt opisuje zachowanie Linuksa 2.2 i 2.4. W zależności od
implementacji procesy kontynuujące zużywanie zasobów procesora po osiągnięciu
ograniczenia miękkiego są różnie traktowane. Aplikacje przenośne, które
mają potrzebę przechwycenia tego sygnału, powinny zakończyć się w sposób
kontrolowany w chwili otrzymaniu pierwszego
.BR SIGXCPU .)
.TP
.B RLIMIT_DATA
Maksymalny rozmiar segmentu danych procesu (dane zainicjalizowane, dane
niezainicjalizowane i sterta).
Ograniczenie to wpływa na wywołania
.BR brk "() and " sbrk (),
które kończą się niepomyślnie, zgłaszając błąd
.B ENOMEM
w momencie natrafienia na miękkie ograniczenie tego zasobu.
.TP
.B RLIMIT_FSIZE
Maksymalny rozmiar plików tworzonych przrz dany proces. Próba rozszerzenia
pliku ponad to ograniczenie kończy się otrzymaniem sygnału
.RB SIGXFSZ .
Domyślnie, sygnał ten kończy działanie procesu, ale proces może go
przechwycić. Wówczas odpowiednia funkcja systemowa (np.
.BR write "(), " truncate ())
kończy się błędem.
.BR EFBIG .
.TP
.B RLIMIT_LOCKS
Ograniczenie łącznej liczby blokad
.BR flock ()
i dzierżaw
.BR fcntl (),
które proces może ustanowić (Linux 2.4 i późniejsze).
.\" dokładniej: Linux 2.4.0-test9 i późniejsze
.TP
.B RLIMIT_MEMLOCK
Maksymalna liczba bajtów pamięci wirtualnej, które można zablokować w pamięci
RAM za pomocą
.BR mlock "() i " mlockall ().
.TP
.B RLIMIT_NOFILE
Określa wartość o jeden większą niż maksymalna liczba deskryptorów plików,
które dany proces może otworzyć. Próby wykonania
.RB ( open "(), " pipe "(), " dup "(), itd.)"
przekraczające tę granicę dają błąd
.BR EMFILE .
.TP
.B RLIMIT_NPROC
Maksymalna liczba procesów, które można utworzyć dla danego rzeczywistego
identyfikatora użytkownika procesu wywołującego. Po napotkaniu tego
ograniczenia,
.BR fork ()
kończy się błędem
.BR EAGAIN .
.TP
.B RLIMIT_RSS
Określa ograniczenie ilości rezydentnych stron procesu (liczba stron pamięci
wirtualnej pozostających w RAM). Ograniczenie to działa począwszy od Linuksa
2.4 i dotyczy jedynie wywołań
.BR madvise ()
z użyciem
.BR MADVISE_WILLNEED .
.TP
.B RLIMIT_STACK
Maksymalny rozmiar stosu procesu w bajtach.
W chwili osiągnięcia tego ograniczenia, generowany jest sygnał
.BR SIGSEGV .
W celu obsłużenia tego sygnału proces musi założyć alternatywny stos dla
sygnałów
.RB ( sigaltstack (2)).
.PP
.B RLIMIT_OFILE
jest nazwą BSD dla
.BR RLIMIT_NOFILE .
.PP
.B getrusage
zwraca bieżące zużycie zasobów dla \fIwho\fP będącego albo
.B RUSAGE_SELF
albo
.BR 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.
.PP
.in +0.5i
.nf
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 */
};
.fi
.in -0.5i
.SH "WARTOŚĆ ZWRACANA"
Po pomyślnym zakończeniu zwracane jest 0. Po błędzie zwracane jest \-1
i odpowiednio ustawiane
.IR errno .
.SH BŁĘDY
.TP
.B EFAULT
.I rlim
lub
.I usage
wskazuje poza dostępną przestrzeń adresową.
.TP
.B EINVAL
.BR getrlimit " lub " setrlimit
zostało wywołane ze złym \fIresource\fP, lub też \fBgetrusage\fP
zostało wywołane ze złym \fIwho\fP.
.TP
.B EPERM
Użytkownik nie będący superużytkownikiem próbuje używać \fBsetrlimit()\fP do
zwiększenia miękich lub twardych limitów, lub też superużytkownik próbuje
zwiększyć RLIMIT_NOFILE powyżej maksimum jądra.
.SH "ZGODNE Z"
SVr4, BSD 4.3
.SH UWAGA
Włączenie
.I <sys/time.h>
nie jest obecnie wymagane, ale zwiększa przenośność.
(Rzeczywiście,
.I struct timeval
jest zdefiniowane w
.IR <sys/time.h> .)
.PP
W Linuksie, jeśli rozporządzenie
.B SIGCHLD
ustawiono jako
.BR SIG_IGN ,
to zasobów wykorzystywane przez procesy potomne są automatycznie dołączane
do wartości zwracanej przez
.BR RUSAGE_CHILDREN ,
pomimo że POSIX 1003.1-2001 jawnie tego zabrania.
.\" Zobacz opis getrusage() w XSH.
.\" Podobne zastrzeżenie było również w SUSv2.
.LP
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
.BR ru_utime ,
.BR ru_stime ,
.BR ru_minflt ,
.B ru_majflt
i
.BR ru_nswap
są pielęgnowane.
.SH "ZOBACZ TAKŻE"
.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)
.SH "INFORMACJE O TŁUMACZENIU"
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i
\fImoże nie być aktualne\fR. 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:
.IP
man \-\-locale=C 2 getrlimit
.PP
Prosimy o pomoc w aktualizacji stron man \- więcej informacji można znaleźć pod
adresem http://sourceforge.net/projects/manpages\-pl/.
|