getpriority(2) System Calls Manual getpriority(2) NAAM getpriority, setpriority - krijg/zet programma in-rooster prioriteit BIBLIOTHEEK Standard C bibliotheek (libc, -lc) SAMENVATTING #include 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 een van PRIO_PROCESS, PRIO_PGRP of PRIO_USER en who wordt geinterpreteerd 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 een 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 voor 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 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). EINVAL which was niet een van PRIO_PROCESS, PRIO_PGRP of PRIO_USER. 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. ESRCH Geen proces gevonden dat de welk en who opgegeven waardes gebruikt. VOLDOET AAN POSIX.1-2008. GESCHIEDENIS POSIX.1-2001, 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 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. C library/kernel verschillen 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.) 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) VERTALING De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema , Mario Blattermann en Luc Castermans 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 . Linux man-pages 6.06 31 oktober 2023 getpriority(2)