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
       ⟨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⟩.