GETPRIORITY(2)

명칭
getpriority, setpriority - 프로그램 스케줄 우선 순위를 취득 / 설정

프로그램 라이브러리
libc

서식
<sys/time.h> <sys/resource.h> int getpriority(int which, int who) int setpriority(int which, int who, int prio)

해설
which 및 who 그리고 지시받는 프로세스, 프로세스 그룹, 또는 유저의 스케줄 우선 순위는 getpriority() 호출로 취득되어 setpriority() 호출로 설정됩니다. which (은)는, PRIO_PROCESS, PRIO_PGRP 또는 PRIO_USER 의 어떤 것인가여, who 하 which 에 관련해 해석됩니다 (PRIO_PROCESS 의 경우는 프로세스 식별자, PRIO_PGRP 의 경우는 프로세스 그룹 식별자, 및 PRIO_USER 의 경우는 유저 ID). who 의 값이 0 인 것은, 현재의 프로세스, 프로세스 그룹, 또는 유저를 나타냅니다. prio (은)는 -20 으로부터 20 의 범위의 값입니다. 디폴트의 우선 순위는 0 입니다. 우선 순위가 낮으면 스케줄 조정에는 보다 형편이 좋아집니다.

getpriority() 호출은, 지정의 프로세스중 한쪽이 향수하는 최고의 우선 순위를 돌려주어 옵니다 (가장 작은 수치입니다). setpriority() 호출은, 지정된 모든 프로세스의 우선 순위를 지정의 값에 설정합니다. 슈퍼 유저만이 우선 순위를 낮게 할 수 있습니다.

반환값
getpriority() (은)는 처리를 올바르게 완료해도 값 -1 을 돌려주는 일이 있으므로, 호출 전에 외부 변수 errno (을)를 클리어 하고 나서, 후에 이것을 체크해 -1 가 에러인지, 또는 정당한 값인지 판정할 필요가 있습니다.

에러
getpriority() (와)과 setpriority() (은)는 다음의 경우에 실패합니다.

[ESRCH]
    지정되었다 which (와)과 who 의 값을 사용해, 프로세스가 발견되지 않았습니다.

[EINVAL]
    which 하지만 PRIO_PROCESS, PRIO_PGRP 또는 PRIO_USER 의 어떤 것이기도 하지 않았습니다.

상기의 에러 뿐만이 아니라, setpriority() (은)는 다음의 경우에 실패합니다.

[EPERM]
    프로세스는 검출되었지만, 그 실효 ID 도 열매 유저 ID 의 어느쪽이나, 호출측의 실효 유저 ID 에 일치하지 않았습니다.

[EACCES]
    슈퍼 유저가 아닌 것이 프로세스의 우선 순위를 내리려고 했습니다.

관련 항목
nice(1), fork(2), renice(8)

역사
getpriority() 함수는 4.2BSD 그리고 처음 등장했습니다.