getpriority,
GETPRIORITY(Y)      Linux Programmer's Manual      GETPRIORITY(Y)



NAME
       getpriority, setpriority - get/set program scheduling pri-
       ority

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 of who denotes the
       current  process, process group, or user.  Prio is a value
       in the range -20 to 19.  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  pro-
       cesses.   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 necessary 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 val-
              ues specified.

       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  pri-
              ority.

NOTES
       The  details on the condition for EPERM depend on the sys-
       tem.  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 effec-
       tive 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 negative 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(e), fork(k), renice(e)



BSD Man Page                2001-06-19             GETPRIORITY(Y)