getpriority(2) System Calls Manual getpriority(2)

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

Standard C bibliotheek (libc, -lc)

#include <sys/resource.h>
int getpriority(int welk, id_t wie);
int setpriority(int welk, id_t wie, int prio);

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.

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.

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).
which was niet een van PRIO_PROCESS, PRIO_PGRP of PRIO_USER.
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.
Geen proces gevonden dat de welk en who opgegeven waardes gebruikt.

POSIX.1-2008.

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

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 Linux 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.

De getpriority systeem aanroep geeft nice waarden terug in het interval 40...1, omdat negatieve waarden worden geinterpreteerd als een fout. De glibc omwikkel functie voor getpriority() vertaalt de waarde volgens de formule unice = 20 - knice. (Daarom komt het kernel 40...1 interval overeen met het bereik -20...19 zoals gezien door de gebruiker.)

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.

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)

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 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.

30 maart 2023 Linux man-pagina's 6.05.01