GETPRIORITY(2) | System Calls Manual | GETPRIORITY(2)

# NAME

`getpriority`, `setpriority` —
get/set program scheduling priority

# LIBRARY

Standard C Library (libc, -lc)

# SYNOPSIS

`#include <sys/resource.h>`

int
`getpriority`(int which, id_t who);

int
`setpriority`(int which, id_t who, int prio);

# DESCRIPTION

The scheduling priority of the process, process group, or user, as indicated by which and who is obtained with the `getpriority`() call and set with the `setpriority`() call.

The priority is maintained in a per-process basis and affects scheduling of LWPs which belong to the process and use the `SCHED_OTHER` scheduling class.

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`). A zero value of who denotes the current process, process group, or user. prio is a value in the range -20 to 20. The default priority is 0; numerically lower priority values cause more favorable scheduling. A value of 19 or 20 will schedule a process only when nothing at priority ≤ 0 is runnable.

The `getpriority`() call returns the highest priority (lowest numerical value) enjoyed by any of the specified processes. The `setpriority`() call sets the priorities of all of the specified processes to the specified value. Only the super-user may lower priority values.

# RETURN VALUES

Since `getpriority`() 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 `setpriority`() call returns 0 if there is no error, or -1 if there is.

# ERRORS

`getpriority`() and `setpriority`() will fail if:

[`EINVAL`]
  which was not one of `PRIO_PROCESS`, `PRIO_PGRP`, or `PRIO_USER`.
[`ESRCH`]
  No process was located using the which and who values specified.

In addition to the errors indicated above, `setpriority`() will fail if:

[`EACCES`]
  A non super-user attempted to lower a process priority value.
[`EPERM`]
  A process was located, but neither its effective nor real user ID matched the effective user ID of the caller.

# SEE ALSO

nice(1), fork(2), sched(3), renice(8)

# HISTORY

The `getpriority`() function call appeared in 4.2BSD.

April 13, 2012 | NetBSD 9.2