plucky (2) setpriority.2.gz

Provided by: manpages-pl-dev_4.25.1-1_all bug

NAZWA

       getpriority, setpriority - pobiera/ustawia priorytet programu podczas szeregowania zadań

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <sys/resource.h>

       int getpriority(int which, id_t who);
       int setpriority(int which, id_t who, int prio);

OPIS

       Priorytet  procesu,  grupy procesów, lub użytkownika podczas szeregowania zadań, wskazywany przez which i
       who jest uzyskiwany za pomocą wywołania getpriority(),  a  ustawiany  za  pomocą  wywołania  setpriority.
       Atrybut  procesu, na którym działają niniejsze wywołania systemu jest tym samym atrybutem (znanym również
       jako wartość „nice”), na którym działa nice(2).

       Wartość which jest jedną z: PRIO_PROCESS, PRIO_PGRP lub PRIO_USER, a  who  jest  interpretowane  względem
       which (identyfikator procesu dla PRIO_PROCESS, identyfikator grupy procesów dla PRIO_PGRP i identyfikator
       użytkownika dla PRIO_USER). Zerowa wartość who określa (odpowiednio) proces  wywołujący,  grupę  procesów
       procesu wywołującego lub rzeczywisty identyfikator użytkownika procesu wywołującego.

       prio  jest  wartością  z  zakresu  od  -20  do  19  (lecz  zob. UWAGI poniżej), gdzie -20 jest najwyższym
       priorytetem, a 19 jest najniższym priorytetem. Próby ustawienia priorytetu spoza tego przedziału,  są  po
       cichu  ograniczane  do  obowiązującego  przedziału.  Domyślnym priorytetem jest 0; mniejsze wartości dają
       procesowy wyższy priorytet podczas szeregowania zadań.

       Wywołanie getpriority() zwraca najwyższy priorytet (najniższą wartość  numeryczną),  spośród  posiadanych
       przez  którykolwiek  z  podanych procesów. Wywołanie setpriority() ustawia priorytety wszystkich podanych
       procesów na wskazaną wartość.

       Tradycyjnie, jedynie proces uprzywilejowany mógł zmniejszyć wartość nice (tj. ustawić wyższy  priorytet).
       Jednakże  od  Linuksa  2.6.12, proces nieuprzywilejowany może zmniejszyć wartość nice procesu docelowego,
       mającego odpowiedni miękki limit RLIMIT_NICE; więcej szczegółów w podręczniku getrlimit(2).

WARTOŚĆ ZWRACANA

       Po pomyślnym zakończeniu getpriority() zwraca wartość nice wywołującego  wątku,  która  może  być  liczbą
       ujemną. Po błędzie zwraca -1 i ustawia errno wskazując błąd.

       Ze  względu  na  fakt, że pomyślne wywołanie do getpriority() może zwrócić poprawną wartość -1, konieczne
       jest wyczyszczenie errno przed wywołaniem, a następnie sprawdzenie errno po nim, aby określić czy wartość
       -1 jest błędem, czy poprawną wartością nice.

       setpriority()  zwraca  0  po pomyślnym zakończeniu. W przypadku błędu zwraca -1 i ustawia errno wskazując
       jego rodzaj.

BŁĘDY

       EACCES Wywołujący próbował obniżyć wartość nice (tj. ustawić wyższy priorytet procesu), ale nie  posiadał
              odpowiednich przywilejów (na Linuksie: nie posiadał przywileju (ang. capability) CAP_SYS_NICE).

       EINVAL which nie był jednym z PRIO_PROCESS, PRIO_PGRP lub PRIO_USER.

       EPERM  Proces  został  zlokalizowany,  ale  jego  efektywny  identyfikator użytkownika nie pasował ani do
              efektywnego,  ani  do  rzeczywistego  identyfikatora  użytkownika  wywołującego  i  nie   był   on
              uprzywilejowany (na Linuksie: nie posiadał przywileju CAP_SYS_NICE). Zob. jednakże UWAGI poniżej.

       ESRCH  Nie zlokalizowano żadnego procesu przy użyciu podanych wartości which i who.

STANDARDY

       POSIX.1-2008.

HISTORIA

       POSIX.1-2001, SVr4, 4.4BSD (interfejsy te pierwotnie pojawiły się w 4.2BSD).

UWAGI

       Więcej informacji o wartości nice opisano w podręczniku sched(7).

       Uwaga:  w  związku  z  dodaniem  funkcjonalności  „autogroup”  w  Linuksie  2.6.38,  wartość nice w wielu
       przypadkach nie zachowuje się w swój tradycyjny sposób. Więcej informacji w podręczniku sched(7).

       Proces potomny utworzony za pomocą fork(2) dziedziczy wartość nice swojego procesu macierzystego. Wartość
       nice jest zachowywana przez execve(2).

       Szczegółowe  warunki  wystąpienia  błędu  EPERM  zależą  od systemu. Powyżej opisano co mówi na ten temat
       POSIX.1-2001, z którym wydają się być zgodne wszystkie systemy typu System V. Jądra Linux przed  Linuksem
       2.6.12  wymagały,  aby  rzeczywisty  lub efektywny ID użytkownika wywołującego zgadzał się z rzeczywistym
       użytkownikiem procesu who (zamiast z jego efektywnym ID użytkownika). Linux 2.6.12 i  późniejsze  wymaga,
       aby  efektywny  identyfikator  użytkownika  wywołującego  zgadzał  się  z  rzeczywistym lub efektywnym ID
       użytkownika procesu who. Wszystkie systemy typu BSD  (SunOS  4.1.3,  Ultrix  4.2,  4.3BSD,  FreeBSD  4.3,
       OpenBSD-2.5, ...) zachowują się w ten sam sposób jak Linux 2.6.12 i późniejsze.

   Różnice biblioteki C/jądra
       Wywołanie  systemowe  getpriority  zwraca  wartości nice przetłumaczone na zakres 40..1, ponieważ wartość
       negatywna zostałaby zinterpretowana jako błąd. Funkcja opakowująca glibc dla  getpriority()  tłumaczy  tą
       wartość  z powrotem, zgodnie z wzorem unice = 20 - knice (zatem zakres 40..1 zwracany przez jądro powraca
       do zakresu -20..19 widzianego przez przestrzeń użytkownika).

USTERKI

       Zgodnie z POSIX, wartość nice jest ustawieniem przypisanym procesowi. Jednak  w  aktualnej  implementacji
       Linuksa/NPTL  wątków  POSIX,  wartość  nice  jest  atrybutem przypisanym wątkowi: różne wątki tego samego
       procesu mogą mieć różne wartości  nice.  Przenośne  aplikacje  powinny  unikać  polegania  na  zachowaniu
       Linuksa, które może w przyszłości ulec zmianie na zgodne ze standardami.

ZOBACZ TAKŻE

       nice(1), renice(1), fork(2), capabilities(7), sched(7)

       Documentation/scheduler/sched-nice-design.txt w drzewie źródeł jądra Linux (od Linuksa 2.6.23)

TŁUMACZENIE

       Autorami  polskiego  tłumaczenia  niniejszej  strony podręcznika są: Przemek Borys <pborys@dione.ids.pl>,
       Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl> i Michał Kułach <michal.kulach@gmail.com>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje  o  warunkach  licencji  można  uzyskać
       zapoznając  się  z  GNU General Public License w wersji 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ lub
       nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

       Błędy w tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej  ⟨manpages-pl-
       list@lists.sourceforge.net⟩.