Provided by:
manpages-es_1.55-8_all 
NOMBRE
getpriority, setpriority - obtiene/asigna la prioridad de planificación
de un programa
SINOPSIS
#include <sys/time.h>
#include <sys/resource.h>
int getpriority(int which, int who);
int setpriority(int which, int who, int prio);
DESCRIPCIÓN
La prioridad de planificación del proceso, grupo de procesos o usuario,
según se indique en which y who se obtiene con la función getpriority y
se asigna con setpriority. Which puede ser PRIO_PROCESS, PRIO_PGRP, o
PRIO_USER, y who se interpreta en función de which (un indentificador
de proceso para PRIO_PROCESS, un indentificador de grupo de procesos
para PRIO_PGRP, y un identificador de usuario para PRIO_USER). Un
valor cero de who indica (respectivamente) el proceso invocador, el
grupo de proceso del proceso invocador, o el identificador de usuario
real del proceso invocador. Prio es un valor que puede variar de -20 a
20 (vea la sección Observaciones más abajo) . La prioridad por defecto
es 0; cuanto más baja es la prioridad más favorable es la
planificación.
La llamada getpriority devuelve la prioridad más alta (el valor
numérico más bajo) de la que disfruta cualquiera de los procesos
especificados. La llamada setpriority asigna el valor especificado a
las prioridades de todos los procesos especificados. Sólo el
superusuario puede decrementar las prioridades (haciéndolas, por tanto,
más altas).
VALOR DEVUELTO
Ya que getpriority legítimamente puede devolver el valor -1, es
necesario borrar la variable externa errno antes de la llamada a la
función y comprobar su valor más adelante para determinar si -1 es un
error o un valor legítimo. La función setpriority devuelve 0 si no hay
error o -1 si lo hay.
ERRORES
ESRCH No se encontró ningún proceso que cumpliera con los valores
especificados por which y who.
EINVAL Which no era PRIO_PROCESS, PRIO_PGRP, ni PRIO_USER.
Además de los errores indicados arriba, setpriority puede fallar si:
EPERM Se encontró un proceso, pero ni el identificador de usuario
efectivo ni el identificador de usuario real del invocador
coinciden con su identificador de usuario efectivo.
EACCES Un no superusuario intentó decrementar la prioridad de un
proceso.
OBSERVACIONES
Los detalles sobre la condición para EPERM dependen del sistema. La
descripción dada arriba es lo que dice SUSv3, y parece ser seguida por
todos los sistemas de tipo SYSV. Linux requiere que el identificador
de usuario real o efectivo del invocador coincida con el usuario real
del proceso who (en lugar de su identificador de usuario efectivo).
Todos los sistemas de tipo BSD (SunOS 4.1.3, Ultrix 4.2, BSD 4.3,
FreeBSD 4.3, OpenBSD-2.5, ...) requieren que el identificador de
usuario efectivo del invocador coincida con el identificador de usuario
real o efectivo del proceso who.
El rango real de prioridad varía entre las diferentes versiones del
núcleo. Las versiones de Linux anteriores a la 1.3.36 tenían
-infinito..15. A partir de la versión 1.3.43 se tiene -20..19, y la
llamada al sistema getpriority devuelve 40..1 para estos valores
(puesto que los números negativos son códigos de error). La llamada de
biblioteca convierte N a 20-N.
Incluir <sys/time.h> no es obligatorio hoy día, pero incrementa la
portabilidad. (De hecho, <sys/resource.h> define la estructura rusage
con campos de tipo struct timeval definida en <sys/time.h>.)
CONFORME A
SVr4, 4.4BSD (estas funciones aparecieron por primera vez en 4.2BSD).
VÉASE TAMBIÉN
nice(1), fork(2), renice(8)