NAME |LIBRARY |SYNOPSIS |DESCRIPTION |RETURN VALUE |ERRORS |STANDARDS |HISTORY |NOTES |BUGS |SEE ALSO |COLOPHON | |
getpriority(2) System Calls Manualgetpriority(2)getpriority, setpriority - get/set program scheduling priority
Standard C library (libc,-lc)
#include <sys/resource.h>int getpriority(intwhich, id_twho);int setpriority(intwhich, id_twho, intprio);
The scheduling priority of the process, process group, or user, as indicated bywhich andwho is obtained with thegetpriority() call and set with thesetpriority() call. The process attribute dealt with by these system calls is the same attribute (also known as the "nice" value) that is dealt with bynice(2). The valuewhich is one ofPRIO_PROCESS,PRIO_PGRP, orPRIO_USER, andwho is interpreted relative towhich (a process identifier forPRIO_PROCESS, process group identifier forPRIO_PGRP, and a user ID forPRIO_USER). A zero value forwho denotes (respectively) the calling process, the process group of the calling process, or the real user ID of the calling process. Theprio argument is a value in the range -20 to 19 (but see NOTES below), with -20 being the highest priority and 19 being the lowest priority. Attempts to set a priority outside this range are silently clamped to the range. The default priority is 0; lower values give a process a higher scheduling priority. Thegetpriority() call returns the highest priority (lowest numerical value) enjoyed by any of the specified processes. Thesetpriority() call sets the priorities of all of the specified processes to the specified value. Traditionally, only a privileged process could lower the nice value (i.e., set a higher priority). However, since Linux 2.6.12, an unprivileged process can decrease the nice value of a target process that has a suitableRLIMIT_NICEsoft limit; seegetrlimit(2) for details.
On success,getpriority() returns the calling thread's nice value, which may be a negative number. On error, it returns -1 and setserrno to indicate the error. Since a successful call togetpriority() can legitimately return the value -1, it is necessary to clearerrno prior to the call, then checkerrno afterward to determine if -1 is an error or a legitimate value.setpriority() returns 0 on success. On failure, it returns -1 and setserrno to indicate the error.
EACCESThe caller attempted to set a lower nice value (i.e., a higher process priority), but did not have the required privilege (on Linux: did not have theCAP_SYS_NICE capability).EINVALwhich was not one ofPRIO_PROCESS,PRIO_PGRP, orPRIO_USER.EPERMA process was located, but its effective user ID did not match either the effective or the real user ID of the caller, and was not privileged (on Linux: did not have theCAP_SYS_NICEcapability). But see HISTORY below.ESRCHNo process was located using thewhich andwho values specified.
POSIX.1-2008.
POSIX.1-2001, SVr4, 4.4BSD (these interfaces first appeared in 4.2BSD). The details on the condition forEPERMdepend on the system. The above description is what POSIX.1-2001 says, and seems to be followed on all System V-like systems. Linux kernels before Linux 2.6.12 required the real or effective user ID of the caller to match the real user of the processwho (instead of its effective user ID). Linux 2.6.12 and later require the effective user ID of the caller to match the real or effective user ID of the processwho. All BSD-like systems (SunOS 4.1.3, Ultrix 4.2, 4.3BSD, FreeBSD 4.3, OpenBSD-2.5, ...) behave in the same manner as Linux 2.6.12 and later.
For further details on the nice value, seesched(7).Note: the addition of the "autogroup" feature in Linux 2.6.38 means that the nice value no longer has its traditional effect in many circumstances. For details, seesched(7). A child created byfork(2) inherits its parent's nice value. The nice value is preserved acrossexecve(2).C library/kernel differences The getpriority system call returns nice values translated to the range 40..1, since a negative return value would be interpreted as an error. The glibc wrapper function forgetpriority() translates the value back according to the formulaunice = 20 - knice (thus, the 40..1 range returned by the kernel corresponds to the range -20..19 as seen by user space).
According to POSIX, the nice value is a per-process setting. However, under the current Linux/NPTL implementation of POSIX threads, the nice value is a per-thread attribute: different threads in the same process can have different nice values. Portable applications should avoid relying on the Linux behavior, which may be made standards conformant in the future.
nice(1),renice(1),fork(2),capabilities(7),sched(7)Documentation/scheduler/sched-nice-design.txt in the Linux kernel source tree (since Linux 2.6.23)
This page is part of theman-pages (Linux kernel and C library user-space interface documentation) project. Information about the project can be found at ⟨https://www.kernel.org/doc/man-pages/⟩. If you have a bug report for this manual page, see ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩. This page was obtained from the tarball man-pages-6.15.tar.gz fetched from ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on 2025-08-11. If you discover any rendering problems in this HTML version of the page, or you believe there is a better or more up- to-date source for the page, or you have corrections or improvements to the information in this COLOPHON (which isnot part of the original manual page), send a mail to man-pages@man7.orgLinux man-pages 6.15 2025-05-17getpriority(2)Pages that refer to this page:renice(1), getrlimit(2), ioprio_set(2), nice(2), sched_rr_get_interval(2), sched_setaffinity(2), sched_setattr(2), sched_setparam(2), sched_setscheduler(2), syscalls(2), errno(3), id_t(3type), proc_pid_stat(5), systemd.exec(5), capabilities(7), credentials(7), pid_namespaces(7), pthreads(7), sched(7)
HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface. For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere. Hosting byjambit GmbH. | ![]() |