Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
GETPRIORITY(2)		   Linux Programmer's Manual		GETPRIORITY(2)

       getpriority, setpriority	- get/set program scheduling priority

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

       int getpriority(int which, int who);
       int setpriority(int which, int who, int prio);

       The  scheduling priority	of the process,	process	group, or user,	as in-
       dicated 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  identi-
       fier  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 priority is 0; lower pri-
       orities 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.

       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.

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

       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	effec-
       tive 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  sys-
       tem  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	porta-
       bility.	 (Indeed,  _sys/resource.h_  defines the rusage	structure with
       fields of type struct timeval defined in	_sys/time.h_.)

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

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

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


Want to link to this manual page? Use this URL:

home | help