Provided by:
manpages-pl-dev_20051117-1_all 
NAZWA
getpriority, setpriority - pobranie/ustawienie priorytetu programu
podczas szeregowania zadań
SKŁADNIA
#include <sys/time.h>
#include <sys/resource.h>
int getpriority(int which, int who);
int setpriority(int which, int 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. which jest
jednym 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 funkcję, jego grupę procesów lub rzeczywisty identyfikator
użytkownika procesu wywołującego funksję. prio jest wartością z
zakresu od -20 do 20 (lecz zobacz UWAGI poniżej). Domyślnym
priorytetem jest 0; mniejsze priorytety powodują korzystniejsze
traktowanie podczas szeregowania zadań.
Funkcja getpriority zwraca najwyższą wartość (najniższą wartość
numeryczną), spośród posiadanych przez którykolwiek z podanych
procesów. Funkcja setpriority ustawia priorytety wszystkich podanych
procesów na wskazaną wartość. Jedynie superużytkownik może zmniejszać
priorytety.
WARTOŚĆ ZWRACANA
Ponieważ -1 jest legalną wartością spośród normalnie zwracanych przez
getpriority, niezbędnym jest wyzerowanie zmiennej zewnętrznej errno
przed wywołaniem tej funkcji i późniejsze sprawdzenie czy -1 oznaczało
błąd, czy normalną wartość. Funkcja setpriority zwraca 0 jeśli nie
było błędów lub -1 jeśli jakiś wystąpił.
BŁĘDY
ESRCH Nie zlokalizowano żadnego procesu przy użyciu podanych wartości
which i who.
EINVAL which nie był jednym z PRIO_PROCESS, PRIO_PGRP lub PRIO_USER.
Oprócz powyższych błędów, dla setpriority mogą wystąpić:
EPERM Proces został zlokalizowany, lecz ani jego efektywny, ani
rzeczywisty ID użytkownika nie odpowiadał efektywnemu ID
użytkownika wywołującego.
EACCES Użytkownik nie będący superużytkownikiem próbował obniżyć
priorytet procesu.
UWAGI
Szczegółowe warunki wystąpienia błędu EPERM zależą od systemu. Powyżej
opisano co mówi na ten temat SUSv3, z którym wydają sie być zgodne
wszystkie systemy typu SYSV. Linux wymaga, 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).
Wszystkie systemy typu BSD (SunOS 4.1.3, Ultrix 4.2, BSD 4.3, FreeBSD
4.3, OpenBSD-2.5, ...) wymagają, aby efektywny ID użytkownika
wywołującego zgadzał się z efektywnym ID użytkownika procesu who.
Rezczywisty zakres priorytetów jest różny dla różnych wersji jądra.
Linux wcześniejszy niż 1.3.36 miał -nieskończoność..15. Linux od 1.3.43
ma -20..19, a funkcja systemowa getpriority zwraca 40..1 dla tych
wartości (gdyż liczby ujemne są kodami błędów). Funkcja biblioteczna
przekształca N na 20-N.
Włączanie <sys/time.h> nie jest obecnie wymagane, ale zwiększa
przenośność. (Rzeczywiście, <sys/resource.h> definiuje strukturę
rusage zawierającą pola typu struct timeval zdefiniowanego w
<sys/time.h>.)
ZGODNE Z
SVr4, 4.4BSD (funkcje te pierwotnie pojawiły się w 4.2BSD).
ZOBACZ TAKŻE
nice(1), fork(2), renice(8)