getpriority(2) - wariua/manpages-ko GitHub Wiki

NAME

getpriority, setpriority - ํ”„๋กœ๊ทธ๋žจ ์Šค์ผ€์ค„๋ง ์šฐ์„ ์ˆœ์œ„ ์–ป๊ธฐ/์„ค์ •ํ•˜๊ธฐ

SYNOPSIS

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

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

DESCRIPTION

which์™€ who๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ํ”„๋กœ์„ธ์Šค๋‚˜ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน, ์‚ฌ์šฉ์ž์˜ ์Šค์ผ€์ค„๋ง ์šฐ์„ ์ˆœ์œ„๋ฅผ getpriority() ํ˜ธ์ถœ๋กœ ์–ป๊ณ  setpriority() ํ˜ธ์ถœ๋กœ ์„ค์ •ํ•œ๋‹ค. ์ด ์‹œ์Šคํ…œ ํ˜ธ์ถœ๋กœ ๋‹ค๋ฃจ๋Š” ํ”„๋กœ์„ธ์Šค ์†์„ฑ์€ nice(2)๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ("๋‚˜์ด์Šค" ๊ฐ’์ด๋ผ๊ณ ๋„ ํ•˜๋Š”) ์†์„ฑ์ด๋‹ค.

which ๊ฐ’์€ PRIO_PROCESS, PRIO_PGRP, PRIO_USER ์ค‘ ํ•˜๋‚˜์ด๊ณ  who๋Š” which๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ด์„ํ•œ๋‹ค. (PRIO_PROCESS์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค ์‹๋ณ„์ž, PRIO_PGRP์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน ์‹๋ณ„์ž, PRIO_USER์—์„œ๋Š” ์‚ฌ์šฉ์ž ID.) who์—์„œ์˜ 0 ๊ฐ’์€ (๊ฐ๊ฐ) ํ˜ธ์ถœ ํ”„๋กœ์„ธ์Šค, ํ˜ธ์ถœ ํ”„๋กœ์„ธ์Šค์˜ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน, ํ˜ธ์ถœ ํ”„๋กœ์„ธ์Šค์˜ ์‹ค์ œ ์‚ฌ์šฉ์ž ID๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

prio ์ธ์ž๋Š” -20์—์„œ 19๊นŒ์ง€ ๋ฒ”์œ„์˜ ๊ฐ’์ด๋ฉฐ (ํ•˜์ง€๋งŒ ์•„๋ž˜ NOTES ์ฐธ๊ณ ), -20์ด ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„์ด๊ณ  19๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„์ด๋‹ค. ์ด ๋ฒ”์œ„ ๋ฐ–์œผ๋กœ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋ฉด ๋ฒ”์œ„์— ๋งž๊ฒŒ ์ž˜๋ฆฐ๋‹ค. ๊ธฐ๋ณธ ์šฐ์„ ์ˆœ์œ„๋Š” 0์ด๊ณ  ๋‚ฎ์€ ๊ฐ’์ด ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋” ๋†’์€ ์Šค์ผ€์ค„๋ง ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ค€๋‹ค.

getpriority() ํ˜ธ์ถœ์€ ์ง€์ •ํ•œ ํ”„๋กœ์„ธ์Šค๋“ค์ด ํ–ฅ์œ ํ•˜๋Š” ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ๊ฐ’(๊ฐ€์žฅ ๋‚ฎ์€ ์ˆ˜)์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. setpriority() ํ˜ธ์ถœ์€ ์ง€์ •ํ•œ ํ”„๋กœ์„ธ์Šค๋“ค ๋ชจ๋‘์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•œ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

์ „ํ†ต์ ์œผ๋กœ๋Š” ํŠน๊ถŒ ํ”„๋กœ์„ธ์Šค๋งŒ ๋‚˜์ด์Šค ๊ฐ’์„ ๋‚ฎ์ถœ ์ˆ˜ (์ฆ‰ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’๊ฒŒ ์„ค์ •ํ•  ์ˆ˜) ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฆฌ๋ˆ…์Šค 2.6.12๋ถ€ํ„ฐ๋Š” ๋น„ํŠน๊ถŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ์ ˆํ•œ RLIMIT_NICE ์—ฐ์„ฑ ์ œํ•œ์„ ๊ฐ€์ง„ ๋Œ€์ƒ ํ”„๋กœ์„ธ์Šค์˜ ๋‚˜์ด์Šค ๊ฐ’์„ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ getrlimit(2)์„ ๋ณด๋ผ.

RETURN VALUE

์„ฑ๊ณต ์‹œ getpriority()๋Š” ํ˜ธ์ถœ ์Šค๋ ˆ๋“œ์˜ ๋‚˜์ด์Šค ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ, ์ด ๊ฐ’์€ ์Œ์ˆ˜์ผ ์ˆ˜๋„ ์žˆ๋‹ค. ์˜ค๋ฅ˜ ์‹œ -1์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์˜ค๋ฅ˜ ์›์ธ์„ ๋‚˜ํƒ€๋‚ด๋„๋ก errno๋ฅผ ์„ค์ •ํ•œ๋‹ค. ์„ฑ๊ณตํ•œ getpriority() ํ˜ธ์ถœ์ด ์ ๋ฒ•ํ•˜๊ฒŒ -1์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— -1์ด ์˜ค๋ฅ˜์ธ์ง€ ์ ๋ฒ•ํ•œ ๊ฐ’์ธ์ง€ ํŒ๋‹จํ•˜๋ ค๋ฉด ํ˜ธ์ถœ ์ „์— ์™ธ๋ถ€ ๋ณ€์ˆ˜ errno๋ฅผ ๋น„์šฐ๊ณ ์„œ ํ›„์— ๊ทธ ๋ณ€์ˆ˜๋ฅผ ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

setpriority()๋Š” ์„ฑ๊ณต ์‹œ 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์˜ค๋ฅ˜ ์‹œ -1์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์˜ค๋ฅ˜ ์›์ธ์„ ๋‚˜ํƒ€๋‚ด๋„๋ก errno๋ฅผ ์„ค์ •ํ•œ๋‹ค.

ERRORS

EINVAL
which๊ฐ€ PRIO_PROCESS, PRIO_PGRP, PRIO_USER ์ค‘ ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋‹ค.
ESRCH
์ง€์ •ํ•œ which์™€ who ๊ฐ’์„ ์‚ฌ์šฉํ•ด ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋„ ์ฐพ์•„๋‚ผ ์ˆ˜ ์—†์—ˆ๋‹ค.

์œ„์— ๋ณด์ธ ์˜ค๋ฅ˜๋“ค์— ๋”ํ•ด์„œ setpriority()๊ฐ€ ๋‹ค์Œ ๊ฒฝ์šฐ์— ์‹คํŒจํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

EACCES
ํ˜ธ์ถœ์ž๊ฐ€ ๋” ๋‚ฎ์€ ๋‚˜์ด์Šค ๊ฐ’์„ (์ฆ‰ ๋” ๋†’์€ ํ”„๋กœ์„ธ์Šค ์šฐ์„ ์ˆœ์œ„๋ฅผ) ์„ค์ •ํ•˜๋ ค ํ–ˆ์ง€๋งŒ ํ•„์š”ํ•œ ํŠน๊ถŒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค. (๋ฆฌ๋ˆ…์Šค: CAP_SYS_NICE ์—ญ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค.)
EPERM
ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ์•„๋ƒˆ์ง€๋งŒ ๊ทธ ์‹คํšจ ์‚ฌ์šฉ์ž ID๊ฐ€ ํ˜ธ์ถœ์ž์˜ ์‹คํšจ ์‚ฌ์šฉ์ž ID๋‚˜ ์‹ค์ œ ์‚ฌ์šฉ์ž ID ์–ด๋А ์ชฝ๊ณผ๋„ ์ผ์น˜ํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ํŠน๊ถŒ๋„ ์—†์—ˆ๋‹ค. (๋ฆฌ๋ˆ…์Šค: CAP_SYS_NICE ์—ญ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค.) ํ•˜์ง€๋งŒ ์•„๋ž˜ NOTES๋ฅผ ๋ณด๋ผ.

CONFORMING TO

POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD (4.2BSD์—์„œ ์ด ์ธํ„ฐํŽ˜์ด์Šค๋“ค์ด ์ฒ˜์Œ ๋“ฑ์žฅ).

NOTES

๋‚˜์ด์Šค ๊ฐ’์— ๋Œ€ํ•œ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ sched(7)๋ฅผ ๋ณด๋ผ.

์ฃผ์˜: ๋ฆฌ๋ˆ…์Šค 2.6.38์— "autogroup" ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜๋ฉด์„œ ๋งŽ์€ ๊ฒฝ์šฐ์—์„œ ๋‚˜์ด์Šค ๊ฐ’์ด ๋” ์ด์ƒ ์ „ํ†ต์  ํšจ๊ณผ๋ฅผ ์ฃผ์ง€ ์•Š๊ฒŒ ๋˜์—ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ sched(7)๋ฅผ ๋ณด๋ผ.

fork(2)๋กœ ์ƒ์„ฑ๋œ ์ž์‹์€ ๋ถ€๋ชจ์˜ ๋‚˜์ด์Šค ๊ฐ’์„ ๋ฌผ๋ ค๋ฐ›๋Š”๋‹ค. execve(2)๋ฅผ ๊ฑฐ์น˜๋ฉด์„œ ๋‚˜์ด์Šค ๊ฐ’์ด ๋ณด์กด๋œ๋‹ค.

EPERM ์กฐ๊ฑด์˜ ์„ธ๋ถ€ ๋‚ด์šฉ์ด ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค. ์œ„ ์„ค๋ช…์€ POSIX.1-2001์—์„œ ๋งํ•˜๋Š” ๊ฒƒ์ธ๋ฐ ๋ชจ๋“  ์‹œ์Šคํ…œ V ๊ณ„์—ด ์‹œ์Šคํ…œ๋“ค์ด ๋”ฐ๋ฅด๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๋ฆฌ๋ˆ…์Šค ์ปค๋„ 2.6.12 ์ „์—์„œ๋Š” ํ˜ธ์ถœ์ž์˜ ์‹ค์ œ ์‚ฌ์šฉ์ž ID๋‚˜ ์‹คํšจ ์‚ฌ์šฉ์ž ID๊ฐ€ ํ”„๋กœ์„ธ์Šค who์˜ (์‹คํšจ ์‚ฌ์šฉ์ž ID๊ฐ€ ์•„๋‹Œ) ์‹ค์ œ ์‚ฌ์šฉ์ž์™€ ์ผ์น˜ํ•˜๊ธฐ๋ฅผ ์š”๊ตฌํ–ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค 2.6.12 ์ดํ›„์—์„œ๋Š” ํ˜ธ์ถœ์ž์˜ ์‹คํšจ ์‚ฌ์šฉ์ž ID๊ฐ€ ํ”„๋กœ์„ธ์Šค who์˜ ์‹ค์ œ ์‚ฌ์šฉ์ž ID๋‚˜ ์‹คํšจ ์‚ฌ์šฉ์ž ID์™€ ์ผ์น˜ํ•˜๊ธฐ๋ฅผ ์š”๊ตฌํ•œ๋‹ค. BSD ๊ณ„์—ด ์‹œ์Šคํ…œ๋“ค(SunOS 4.1.3, Ultrix 4.2, 4.3BSD, FreeBSD 4.3, OpenBSD-2.5, ...)์€ ๋ชจ๋‘ ๋ฆฌ๋ˆ…์Šค 2.6.12 ์ดํ›„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

<sys/time.h>๋ฅผ ํฌํ•จ์‹œํ‚ค๋Š” ๊ฒƒ์ด ์š”์ฆ˜์€ ํ•„์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ์ด์‹์„ฑ์„ ๋†’์—ฌ ์ค€๋‹ค. (์‹ค์ œ๋กœ <sys/resource.h>์—์„œ ์ •์˜ํ•˜๋Š” rusage ๊ตฌ์กฐ์ฒด์—๋Š” <sys/time.h>์— ์ •์˜๋ผ ์žˆ๋Š” struct timeval ํƒ€์ž… ํ•„๋“œ๋“ค์ด ์žˆ๋‹ค.)

C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ/์ปค๋„ ์ฐจ์ด

์ปค๋„ ๋‚ด์—์„œ ์‹ค์ œ๋กœ๋Š” 40..1 ๋ฒ”์œ„๋ฅผ ์ด์šฉํ•ด ๋‚˜์ด์Šค ๊ฐ’์„ ํ‘œํ˜„ํ•œ๋‹ค. (์Œ์ˆ˜๋Š” ์˜ค๋ฅ˜ ์ฝ”๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.) ๊ทธ๋ฆฌ๊ณ  ์ด ๊ฐ’์ด setpriority() ๋ฐ getpriority() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์ด๋‹ค. ์ด ์‹œ์Šคํ…œ ํ˜ธ์ถœ๋“ค์— ๋Œ€ํ•œ glibc ๋ž˜ํผ ํ•จ์ˆ˜๋“ค์—์„œ unice = 20 - knice ์‹์— ๋”ฐ๋ผ์„œ ๋‚˜์ด์Šค ๊ฐ’์˜ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ํ‘œํ˜„๊ณผ ์ปค๋„ ํ‘œํ˜„ ์‚ฌ์ด ๋ณ€ํ™˜์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. (๊ทธ๋ž˜์„œ ์ปค๋„์˜ 40..1 ๋ฒ”์œ„๊ฐ€ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์— ๋ณด์ด๋Š” -20..19 ๋ฒ”์œ„๋กœ ์ƒ์‘ํ•œ๋‹ค.)

BUGS

POSIX์— ๋”ฐ๋ฅด๋ฉด ๋‚˜์ด์Šค ๊ฐ’์€ ํ”„๋กœ์„ธ์Šค๋ณ„ ์„ค์ •์ด๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์žฌ์˜ ๋ฆฌ๋ˆ…์Šค/NPTL POSIX ์Šค๋ ˆ๋“œ ๊ตฌํ˜„์—์„œ๋Š” ๋‚˜์ด์Šค ๊ฐ’์ด ์Šค๋ ˆ๋“œ๋ณ„ ์†์„ฑ์ด๋‹ค. ์ฆ‰, ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ์Šค๋ ˆ๋“œ๋“ค์ด ์„œ๋กœ ๋‹ค๋ฅธ ๋‚˜์ด์Šค ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ด์‹ ๊ฐ€๋Šฅํ•œ ์‘์šฉ์—์„œ๋Š” ํ–ฅํ›„์— ํ‘œ์ค€์„ ์ค€์ˆ˜ํ•˜๋„๋ก ๋ฐ”๋€” ์ˆ˜๋„ ์žˆ๋Š” ๋ฆฌ๋ˆ…์Šค ๋™์ž‘ ๋ฐฉ์‹์— ์˜์กดํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•ด์•ผ ํ•œ๋‹ค.

SEE ALSO

nice(1), renice(1), fork(2), capabilities(7), sched(7)

๋ฆฌ๋ˆ…์Šค ์ปค๋„ ์†Œ์Šค ํŠธ๋ฆฌ์˜ Documentation/scheduler/sched-nice-design.txt (๋ฆฌ๋ˆ…์Šค 2.6.23๋ถ€ํ„ฐ).


2017-09-15

โš ๏ธ **GitHub.com Fallback** โš ๏ธ