getpriority, setpriority - get or set program scheduling priority
#define PRIO_PROCESS 0 /* process */
#define PRIO_PGRP 1 /* process group */
#define PRIO_USER 2 /* user id */
prio = getpriority(which, who)
int prio, which, who;
setpriority(which, who, prio)
int which, who, prio;
The scheduling priority of the process, process group, or user, as
indicated by which and who, is obtained with the call and set with the
call. The which is one of PRIO_PROCESS, PRIO_PGRP, or PRIO_USER, and
who is interpreted relative to which (a process identifier for
PRIO_PROCESS, process group identifier for PRIO_PGRP, and a user ID for
PRIO_USER). The prio is a value in the range -20 to 20. The default
priority is 0; lower priorities cause more favorable scheduling.
The call returns the highest priority (lowest numerical value) enjoyed
by any of the specified processes. The call sets the priorities of all
of the specified processes to the specified value. Only the superuser
may lower priorities.
Since can legitimately return the value -1, it is necessary to clear
the external variable errno prior to the call, then check it afterward
to determine if a -1 is an error or a legitimate value. The call
returns 0 if there is no error or -1 if there is.
The and system calls fail under the following conditions:
[ESRCH] No processes were located using the which and who values
[EINVAL] The which was not one of PRIO_PROCESS, PRIO_PGRP, or
In addition to the errors indicated above, setpriority can fail under
the following conditions:
[EPERM] A process was located, but neither its effective nor
real user ID matched the effective user ID of the call‐
[EACCES] A user other than the superuser attempted to change a
process priority to a negative value.
See Alsonice(1), fork(2), renice(8)getpriority(2)