Provided by: manpages-pl-dev_4.26.0-1_all 

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.9.1 2 maja 2024 r. getpriority(2)