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¶
Uwaga! To tłumaczenie może być nieaktualne!
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)
Powyższe tłumaczenie pochodzi z nieistniejącego już
Projektu Tłumaczenia Manuali i
może nie być
aktualne. W razie zauważenia różnic między
powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub
funkcji, prosimy o zapoznanie się z oryginalną
(angielską) wersją strony podręcznika za pomocą
polecenia:
- man --locale=C 2 getpriority
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
znaleźć pod adresem
http://sourceforge.net/projects/manpages-pl/.