getpriority

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
GETPRIORITY(2)		  Linux Programmer’s Manual	       GETPRIORITY(2)



NAME
       getpriority, setpriority - get/set program scheduling priority

SYNOPSIS
       #include <sys/time.h>
       #include <sys/resource.h>

       int getpriority(int which, int who);
       int setpriority(int which, int 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 for who denotes
       (respectively)  the  calling process, the process group of the calling
       process, or the real user ID of the calling process.  Prio is a	value
       in  the range -20 to 20 (but see the Notes below).  The default prior-
       ity 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.

RETURN VALUE
       Since  getpriority  can legitimately return the value -1, it is neces-
       sary to clear the external variable errno  prior	 to  the  call,	 then
       check  it  afterwards 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
       ESRCH  No  process  was	located using the which and who values speci-
	      fied.

       EINVAL Which was not one of PRIO_PROCESS, PRIO_PGRP, or PRIO_USER.

       In addition to the errors indicated above, setpriority may fail if:

       EPERM  A process was located, but neither the effective nor  the	 real
	      user ID of the caller matches its effective user ID.

       EACCES A non super-user attempted to lower a process priority.

NOTES
       The  details  on	 the  condition	 for EPERM depend on the system.  The
       above description is what SUSv3 says, and seems to be followed on  all
       SYSV-like  systems.   Linux  requires the real or effective user ID of
       the caller to match the real user of the process who (instead  of  its
       effective  user	ID).   All BSD-like systems (SunOS 4.1.3, Ultrix 4.2,
       BSD 4.3, FreeBSD 4.3, OpenBSD-2.5, ...) require the effective user  ID
       of  the	caller	to match the real or effective user ID of the process
       who.

       The actual priority  range  varies  between  kernel  versions.	Linux
       before  1.3.36  had -infinity..15. Linux since 1.3.43 has -20..19, and
       the system call getpriority returns 40..1 for these values (since neg-
       ative  numbers  are  error  codes).   The library call converts N into
       20-N.

       Including <sys/time.h> is  not  required	 these	days,  but  increases
       portability.   (Indeed,	<sys/resource.h> defines the rusage structure
       with fields of type struct timeval defined in <sys/time.h>.)

CONFORMING TO
       SVr4, 4.4BSD (these function calls first appeared in 4.2BSD).

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



BSD Man Page			  2002-06-21		       GETPRIORITY(2)