GETPRIORITY(2) | System Calls Manual | GETPRIORITY(2) |
getpriority
,
setpriority
— get/set
program scheduling priority
#include
<sys/resource.h>
int
getpriority
(int which,
id_t who);
int
setpriority
(int which,
id_t who, int prio);
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.
Only the super-user may lower priorities.
Additionally, the current thread or process can
be placed in a background state by specifying PRIO_DARWIN_THREAD or
PRIO_DARWIN_PROCESS for which. Only a value of zero
(the current thread or process) is supported for who
when setting or getting background state. prio is
either 0 (to remove current thread from background status) or PRIO_DARWIN_BG
(to set current thread into background state). When a thread or process is
in a background state the scheduling priority is set to the lowest value,
disk IO is throttled (with behavior similar to using
setiopolicy_np(3) to set a throttleable policy), and
network IO is throttled for any sockets opened after going into background
state. Any previously opened sockets are not affected. The
getpriority
()
call returns 0 when current thread or process is not in background state or
1 when the current thread is in background state. Any thread or process can
set itself into background state.
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.
getpriority
() and
setpriority
() will fail if:
EINVAL
]PRIO_PROCESS
, PRIO_PGRP
,
PRIO_USER
,
PRIO_DARWIN_THREAD
, or
PRIO_DARWIN_PROCESS
.EINVAL
]EINVAL
]PRIO_DARWIN_THREAD
or
PRIO_DARWIN_PROCESS
.ESRCH
]In addition to the errors indicated above,
setpriority
() will fail if:
#include
<sys/types.h>
#include
<sys/resource.h>
The include file
<sys/types.h>
is
necessary.
int
getpriority
(int
which, int who);;
int
setpriority
(int
which, int who, int
value);;
The type of who has changed.
The getpriority
() function call appeared
in 4.2BSD.
June 4, 1993 | BSD 4 |