Provided by: manpages-pl-dev_20060617-1_all bug

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)