Man page - getpriority(2)

Packages contains this manual

Available languages:

en fr pl nl ja ru ro

Manual

GETPRIORITY

名 前
書 式
説 明
返 り 値
エ ラ ー
準 拠
注 意
C ラ イ ブ ラ リ と カ ー ネ ル の 違 い
バ グ
関 連 項 目
こ の 文 書 に つ い て

名 前

getpriority, setpriority - プ ロ グ ラ ム の ス ケ ジ ュ ー リ ン グ の 優 先 度 を 取 得 /設 定 す る

書 式

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

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

説 明

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. The process attribute dealt with by these system calls is the same attribute (also known as the "nice" value) that is dealt with by nice (2).

which の 値 は PRIO_PROCESS , PRIO_PGRP , PRIO_USER , の ど れ か 一 つ で 、 who which に 応 じ て 解 釈 さ れ る ( PRIO_PROCESS だ と プ ロ セ ス 識 別 子 、 PRIO_PGRP だ と プ ロ セ ス グ ル ー プ 識 別 子 、 PRIO_USER だ と UID (ユ ー ザ ー ID) と 解 釈 さ れ る )。 who が ゼ ロ な ら ば 、 (そ れ ぞ れ )呼 び 出 し た プ ロ セ ス 、 呼 び 出 し た プ ロ セ ス の プ ロ セ ス グ ル ー プ 、 呼 び 出 し た プ ロ セ ス の 実 UID を 意 味 す る 。

prio 引 数 は -20 か ら 19 の 範 囲 の 値 で (但 し 以 下 の 「 注 意 」 を 参 照 )、 -20 が 最 高 優 先 度 で 、 19 が 最 低 優 先 度 で あ る 。 優 先 度 を こ の 範 囲 外 に 設 定 し よ う と し た 場 合 は 、 値 は 黙 っ て こ の 範 囲 と な る 。 デ フ ォ ル ト の 優 先 度 は 0 で あ る ; 小 さ な 数 字 ほ ど 、 プ ロ セ ス の ス ケ ジ ュ ー リ ン グ 優 先 度 が 高 く な る 。

getpriority () コ ー ル は 指 定 し た プ ロ セ ス の 中 の 最 も 高 い 優 先 度 (数 値 的 に は 最 小 の 値 ) を 返 す 。 setpriority () コ ー ル は 指 定 し た プ ロ セ ス 全 て の 優 先 度 を 指 定 し た 値 に 設 定 す る 。

Traditionally, only a privileged process could lower the nice value (i.e., set a higher priority). However, since Linux 2.6.12, an unprivileged process can decrease the nice value of a target process that has a suitable RLIMIT_NICE soft limit; see getrlimit (2) for details.

返 り 値

On success, getpriority () returns the calling thread’s nice value, which may be a negative number. On error, it returns -1 and sets errno to indicate the cause of the error.

getpriority () は 成 功 し た 場 合 に も -1 の 値 を 返 す 可 能 性 が あ る の で 、 呼 び 出 し の 前 に 外 部 変 数 の errno を ク リ ア し 、 呼 び 出 し の 後 に 返 り 値 の -1 が 正 当 な 値 か エ ラ ー か を 判 別 す る 必 要 が あ る 。

成 功 す る と 、 setpriority () は 0 を 返 す 。 エ ラ ー の 場 合 、 -1 を 返 し 、 errno に エ ラ ー の 原 因 を 示 す 値 を 設 定 す る 。

エ ラ ー

EINVAL

which PRIO_PROCESS , PRIO_PGRP , PRIO_USER の い ず れ で も な い 。

ESRCH

which who で 指 定 さ れ た プ ロ セ ス が 存 在 し な い 。

上 記 の も の に 加 え て setpriority () で は 以 下 の エ ラ ー が あ る :

EACCES

The caller attempted to set a lower nice value (i.e., a higher process priority), but did not have the required privilege (on Linux: did not have the CAP_SYS_NICE capability).

EPERM

プ ロ セ ス は 見 つ か っ た が 、 そ の プ ロ セ ス の 実 効 (effective) UID が 呼 び 出 し 元 の 実 効 UID に も 実 (real) UID に も 一 致 せ ず 、 呼 び 出 し 元 が 特 権 も 持 っ て い な か っ た (Linux の 場 合 、 CAP_SYS_NICE ケ ー パ ビ リ テ ィ が な か っ た )。 以 下 の 「 注 意 」 も 参 照 の こ と 。

準 拠

POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD (こ れ ら の イ ン タ ー フ ェ ー ス は 4.2BSD で 初 め て 登 場 し た )

注 意

nice 値 の 詳 細 は sched (7) を 参 照 の こ と 。

Note : the addition of the "autogroup" feature in Linux 2.6.38 means that the nice value no longer has its traditional effect in many circumstances. For details, see sched (7).

fork (2) で 作 成 さ れ た 子 プ ロ セ ス は 、 親 プ ロ セ ス の nice 値 を 継 承 す る 。 execve (2) の 前 後 で nice 値 は 保 存 さ れ る 。

EPERM が 発 生 す る 条 件 の 詳 細 は シ ス テ ム に 依 存 す る 。 上 記 の 説 明 は POSIX.1-2001 の も の で あ り 、 全 て の System V 風 シ ス テ ム は こ れ に 従 っ て い る よ う で あ る 。 2.6.12 よ り 前 の Linux カ ー ネ ル で は 、 呼 び 出 し 元 の 実 UID ま た は 実 効 UID が プ ロ セ ス who の (実 効 UID で な く ) 実 UID に 一 致 す る 必 要 が あ る 。 Linux 2.6.12 以 降 で は 、 呼 び 出 し 元 の 実 行 UID が プ ロ セ ス who の 実 UID か 実 効 UID の い ず れ か と 一 致 す る 必 要 が あ る 。 全 て の BSD 風 シ ス テ ム (SunOS 4.1.3, Ultrix 4.2, 4.3BSD, FreeBSD 4.3, OpenBSD-2.5等 ) は 、 Linux 2.6.12 以 降 と 同 じ 動 作 を す る 。

現 在 で は <sys/time.h> を イ ン ク ル ー ド す る 必 要 は な い が 、 イ ン ク ル ー ド す れ ば 移 植 性 を 高 め る こ と が で き る (実 際 に は <sys/resource.h> rusage 構 造 体 が 定 義 さ れ て い る が 、 そ の フ ィ ー ル ド で 使 用 さ れ て い る struct timeval 型 は <sys/time.h> で 定 義 さ れ て い る )。

C ラ イ ブ ラ リ と カ ー ネ ル の 違 い

カ ー ネ ル 内 部 で は 、 nice 値 は 実 際 に は 40 〜 1 の 範 囲 を 使 っ て 表 現 さ れ て お り (負 の 値 は エ ラ ー コ ー ド と な る た め )、 こ ち ら の 値 が シ ス テ ム コ ー ル setpriority () と getpriority () で 使 用 さ れ て い る 。 glibc の こ れ ら の シ ス テ ム コ ー ル の ラ ッ パ ー 関 数 に お い て 、 nice 値 の ユ ー ザ ー 領 域 (user-land) と カ ー ネ ル 表 現 の 間 の 変 換 が 行 わ れ る 。 変 換 式 は unice = 20 - knice と な る 。 (し た が っ て 、 カ ー ネ ル の 40..1 の 範 囲 は ユ ー ザ ー 空 間 で 見 え る -20..19 の 範 囲 に 対 応 す る 。 )

バ グ

POSIX で は nice 値 は プ ロ セ ス 単 位 の 設 定 と な っ て い る 。 一 方 、 現 在 の POSIX ス レ ッ ド の Linux/NPTL 実 装 で は 、 nice 値 は ス レ ッ ド 単 位 の 属 性 で あ る 。 同 じ プ ロ セ ス の 別 々 の ス レ ッ ド が 異 な る nice 値 を 持 つ 場 合 が あ る 。 移 植 性 が 必 要 な ア プ リ ケ ー シ ョ ン で は こ の Linux の 動 作 を 前 提 す る の は 避 け る べ き で あ る 。 Linux の 動 作 は 将 来 標 準 に 準 拠 し た 動 作 に な る か も し れ な い 。

関 連 項 目

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

Linux カ ー ネ ル の ソ ー ス ツ リ ー 内 の Documentation/scheduler/sched-nice-design.txt (Linux 2.6.23 以 降 )

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。