getpriority(2) System Calls Manual getpriority(2) NUME getpriority, setpriority - obine/stabilete prioritatea de planificare a programului BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include int getpriority(int which, id_t who); int setpriority(int which, id_t who, int prio); DESCRIERE Prioritatea de planificare a procesului, a grupului de procese sau a utilizatorului, aa cum este indicata de which i who, se obine cu apelul getpriority() i se stabilete cu apelul setpriority(). Atributul de proces tratat de aceste apeluri de sistem este acelai atribut (cunoscut i sub numele de valoare ,,de curtoazie" (nice)) care este tratat de nice(2). Valoarea which este una dintre PRIO_PROCESS, PRIO_PGRP sau PRIO_USER, iar who este interpretata in raport cu which (un identificator de proces pentru PRIO_PROCESS, un identificator de grup de proces pentru PRIO_PGRP i un ID de utilizator pentru PRIO_USER). O valoare zero pentru who denota (respectiv) procesul apelant, grupul de procese al procesului apelant sau ID-ul real de utilizator al procesului apelant. Argumentul prio este o valoare cuprinsa intre -20 i 19 (a se vedea seciunea NOTE de mai jos), -20 fiind cea mai mare prioritate i 19 cea mai mica prioritate. Incercarile de a stabili o prioritate in afara acestui interval sunt fixate in mod silenios in intervalul respectiv. Prioritatea implicita este 0; valorile mai mici confera unui proces o prioritate de planificare mai mare. Apelul getpriority() returneaza cea mai mare prioritate (cea mai mica valoare numerica) de care se bucura oricare dintre procesele specificate. Apelul setpriority() stabilete prioritaile tuturor proceselor specificate la valoarea specificata. In mod tradiional, numai un proces privilegiat putea sa reduca valoarea ,,nice" (adica sa stabileasca o prioritate mai mare). Cu toate acestea, incepand cu Linux 2.6.12, un proces neprivilegiat poate scadea valoarea ,,nice" a unui proces inta care are o limita flexibila RLIMIT_NICE adecvata; pentru detalii, consultai getrlimit(2). VALOAREA RETURNATA In caz de succes, getpriority() returneaza valoarea de curtoazie ,,nice" a firului apelant, care poate fi un numar negativ. In caz de eroare, returneaza -1 i configureaza errno pentru a indica eroarea. Deoarece un apel reuit la getpriority() poate returna in mod legitim valoarea -1, este necesar sa se elibereze errno inainte de apel, apoi sa se verifice errno dupa aceea pentru a determina daca -1 este o eroare sau o valoare legitima. setpriority() returneaza 0 in caz de succes, In caz de eroare, returneaza -1 i configureaza errno pentru a indica eroarea. ERORI-IEIRE EACCES Apelantul a incercat sa stabileasca o valoare de curtoazie ,,nice" mai mica (de exemplu, o prioritate mai mare a procesului), dar nu avea privilegiul necesar (in Linux: nu avea capacitatea CAP_SYS_NICE). EINVAL which nu a fost una dintre PRIO_PROCESS, PRIO_PGRP sau PRIO_USER. EPERM A fost localizat un proces, dar ID-ul sau efectiv de utilizator nu corespundea nici cu ID-ul efectiv, nici cu cel real al apelantului i nu era privilegiat (in Linux: nu avea capacitatea CAP_SYS_NICE). Dar consultai seciunea NOTE de mai jos. ESRCH Nu a fost localizat niciun proces folosind valorile which i who specificate. STANDARDE POSIX.1-2008. ISTORIC POSIX.1-2001 SVr4, 4.4BSD (aceste apeluri de sistem au aparut pentru prima data in 4.2BSD). NOTE Pentru mai multe detalii cu privire la aceasta valoare ,,nice", a se vedea sched(7). Nota: adaugarea caracteristicii ,,autogroup" in Linux 2.6.38 inseamna ca valoarea de curtoazie ,,nice" nu mai are efectul sau tradiional in multe situaii. Pentru detalii, a se vedea sched(7). Un proces-copil creat de fork(2) motenete valoarea de curtoazie ,,nice" a parintelui sau. Aceasta valoare este pastrata in execve(2). Detaliile privind condiia pentru EPERM depind de sistem. Descrierea de mai sus este ceea ce spune POSIX.1-2001 i se pare ca este urmata pe toate sistemele de tip System V. Nucleele Linux inainte de Linux 2.6.12 cereau ca ID-ul de utilizator real sau efectiv al apelantului sa corespunda cu cel al utilizatorului real al procesului who (in loc de ID-ul de utilizator efectiv al acestuia). Linux 2.6.12 i versiunile ulterioare impun ca ID-ul efectiv al utilizatorului apelantului sa corespunda cu ID-ul real sau efectiv al utilizatorului procesului who. Toate sistemele de tip BSD (SunOS 4.1.3, Ultrix 4.2, 4.3BSD, FreeBSD 4.3, OpenBSD-2.5, ...) se comporta in acelai mod ca i Linux 2.6.12 i versiunile ulterioare. Diferene intre biblioteca C i nucleu Apelul de sistem getpriority returneaza valori de curtoazie ,,nice" traduse in intervalul 40...1, deoarece o valoare de returnare negativa ar fi interpretata ca o eroare. Funcia de invaluire glibc pentru getpriority() traduce valoarea inapoi conform formulei unice = 20 - knice (astfel, intervalul 40..1 returnat de nucleu corespunde intervalului -20..19, aa cum este vazut de spaiul utilizatorului). ERORI In conformitate cu POSIX, valoarea de curtoazie ,,nice" este un atribut pentru fiecare proces in parte. Cu toate acestea, in cadrul implementarii actuale Linux/NPTL a firelor POSIX, valoarea de curtoazie este un atribut per fir: diferite fire din acelai proces pot avea valori de curtoazie diferite. Aplicaiile portabile ar trebui sa evite sa se bazeze pe comportamentul Linux, care ar putea deveni conform cu standardele in viitor. CONSULTAI I nice(1), renice(1), fork(2), capabilities(7), sched(7) Documentation/scheduler/sched-nice-design.txt in arborele sursa al nucleului Linux (incepand cu Linux 2.6.23) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.9.1 2 mai 2024 getpriority(2)