GETPRIORITY(2)

NAAM
getpriority, setpriority - krijg/zet programma in-rooster prioriteit

SAMENVATTING
#include <sys/time.h>
#include <sys/resource.h>

int getpriority(int welk, id_t wie);
int setpriority(int welk, id_t wie, int prio);

BESCHRIJVING
De in-rooster prioriteit van het proces, proces groep of gebruiker aangeduid door welk en wie wordt verkregen met de getpriority aanroep en wordt gezet met de setpriority aanroep.

Welk is één van PRIO_PROCESS, PRIO_PGRP of PRIO_USER en who wordt geïnterpreteerd afhankelijk van welk (een proces identificeerder voor PRIO_PROCESS, proces groep identificeerder voor PRIO_PGRP, en een gebruiker ID voor PRIO_USER). Een nul waarde van wie duidt het huidige proces, proces groep of gebruiker aan.

Het prio argument is een waarde in het interval van -20 tot 19 (zie OPMERKINGEN hieronder), met -20 zijnde de hoogste prioriteit en 19 de laagste prioriteit. Pogingen om een prioriteit buiten het interval in te stellen worden stilzwijgend beperkt tot het interval. De standaard prioriteit is 0; lagere waarden geven een proces een hogere inroostering prioriteit.

De getpriority() aanroep geeft de hoogste prioriteit (laagste genummerde waarde) die één van de opgegeven processen geniet. De setpriority aanroep zet de prioriteiten van alle opgegeven processen naar de opgegeven waarde.

Traditioneel kon alleen een geprivilegieerd proces de prioriteit waarde verlagen (m.a.w. een hogere prioriteit instellen). Echter vanaf Linux 2.6.12 kan een niet-geprivilegieerd proces de prioriteit van een doel proces verlagen als dat een bruikbare RLIMIT_NICE zachte limiet heeft; zie getrlimit(2) voor details.

EIND WAARDE
Bij succes geeft setpriority de prioriteit van de aanroepende thread terug, en dat kan een negatief getal zijn. Bij een fout geeft het -1 terug en zet errno op de fout aan te geven.

Omdat een succesvolle aanroep van getpriority() legitiem de waarde -1 kan teruggeven, is het nodig om errno te wissen vóór de aanroep, vervolgens nadien errno te controleren en bepalen of -1 een fout is of een legitieme waarde.

setpriority geeft 0 terug bij succes. Bij een fout geeft het -1 terug en zet errno om de fout aan te geven.

FOUTEN

EINVAL
    which was niet een van PRIO_PROCESS, PRIO_PGRP of PRIO_USER.

ESRCH
    Geen proces gevonden dat de welk en who opgegeven waardes gebruikt.

In aanvulling op de bovenstaande fouten hierboven zal setpriority() falen als:

EACCES
    De aanroeper probeerde een lagere prioriteit in te stellen (m.a.w. een hogere proces prioriteit), maar had niet het vereiste privilege (op Linux: had niet de CAP_SYS_NICE capaciteit).

EPERM
    Een proces werd gevonden, maar nog zijn effectieve gebruiker ID kwam niet overeen met ofwel de effectieve of echte gebruiker ID van de aanroeper, en was niet gerechtigd (op Linux: had niet de CAP_SYS_NICE capaciteit). Maar zie OPMERKINGEN hieronder.

VOLDOET AAN
POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD (deze functie aanroepen verschenen voor het eerst in 4.2BSD).

OPMERKINGEN
Voor verdere details over de prioriteit waarde, zie sched(7).

Opmerkinge: de toevoeging van het "autogroup" kenmerk in Linux 2.6.38 betekent dat de prioriteit waarde niet langer zijn traditioneel effect in veel omstandigheden heeft. Voor details, zie sched(7).

Een kind aangemaakt door fork(2) erft de prioriteit van zijn ouder. De prioriteit wordt doorgegeven langs execve(2).

De details van de conditie voor EPERM zijn afhankelijk van het systeem. Bovenstaande beschrijving is wat POSIX.1-2001 zegt en lijkt gevolgd te worden op alle System V-achtige systemen. Linux kernels voor 2.6.12 vereisten dat het echte of effectieve gebruiker ID van de aanroeper overeen kwamen met de echte gebruiker van het proces wie (in plaats van het effectieve gebruiker ID). Linux 2.6.12 en later vereiste dat het effectieve gebruiker ID van de aanroeper overeen kwam met het echte of effectieve gebruiker ID van het proces wie. Alle BSD-achtige systemen (SunOS 4.1.3, Ultrix 4.2, 4.3BSD, FreeBSD 4.3, OpenBSD-2.5,...) gedragen zich op dezelfde manier als Linux 2.6.12 en later.

Het aanroepen van <sys/time.h> is tegenwoordig niet nodig, maar verhoogd overdraagbaarheid. (Inderdaad, <sys/resource.h> gedefinieerd de rusage structure met velden van het type struct timeval gedefinieerd in <sys/time.h>.)

  C library/kernel verschillen
In de kernel worden de prioriteit waarden gerepresenteerd gebruik makend van het interval 40...1 (omdat negatieve waarden fout codes zijn) en dit zijn de waarden gebruikt door de setpriority() en getpriority() systeem aanroepen. De glibc omwikkel functies voor deze systeem aanroepen handelen de vertaling tussen de gebruiker-omgeving en kernel representaties van de prioriteit waarde af volgens de formule unice = 20 - knice. (Daarom komt het kernel 40...1 interval overeen met het bereik -20...19 zoals gezien door de gebruiker.)

BUGS
Volgens POSIX, is de prioriteit waarde een per-proces instelling. Echter onder de huidige Linux/NPTL implementatie van de POSIX threads, is de prioriteit waarde een per-thread attribute: verschillende threads in hetzelfde proces kunnen verschillende prioriteiten hebben. Overdraagbare applicaties moeten vermijden te vertrouwen op Linux gedrag, omdat dit in de toekomst aangepast kan worden aan de standaarden.

ZIE OOK
nice(1), renice(1), fork(2), capabilities(7), sched(7)

Documentation/scheduler/sched-nice-design.txt in de Linux kernel bron code (vanaf Linux 2.6.23)

COLOFON
Deze pagina is onderdeel van release 5.11 van het Linux man-pages-project. Een beschrijving van het project, informatie over het melden van bugs en de nieuwste versie van deze pagina zijn op https://www.kernel.org/doc/man-pages/ te vinden.

VERTALING
De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema <joshb@xs4all.nl>, Mario Blättermann <mario.blaettermann@gmail.com> en Luc Castermans <luc.castermans@gmail.com> Deze vertaling is vrije documentatie; lees de GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) of later over de Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID. Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar debian-l10n-dutch@lists.debian.org.