Provided by: manpages-pl-dev_4.23.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  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.

Linux man-pages 6.8                              2 maja 2024 r.                                   getpriority(2)