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

# NAME

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

# 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. 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; lower priorities cause more favorable scheduling.

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. Priority values outside the range -20 to 20 are truncated to the appropriate limit. Only the superuser may lower priorities.

# 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:

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

In addition, `setpriority`() will fail if:

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

# SEE ALSO

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

# STANDARDS

The `getpriority`() and `setpriority`() functions conform to IEEE Std 1003.1-2008 (“POSIX.1”).

# HISTORY

The predecessor of these functions, the former `nice`() system call, appeared in Version 3 AT&T UNIX and was removed in 4.3BSD-Reno. The `getpriority`() and `setpriority`() system calls appeared in 4.1cBSD.

September 10, 2015 | Debian