\fBint setpriority(int \fP\fIwhich\fP\fB, int \fP\fIwho\fP\fB, int \fP\fIprio\fP\fB);\fP
.SH 説明
システムコール \fBgetpriority\fP() や \fBsetpriority\fP() は、 \fIwhich\fP と \fIwho\fP
-ã\81§æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fã\83\97ã\83ã\82»ã\82¹ã\80\81ã\83\97ã\83ã\82»ã\82¹ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\80\81ã\83¦ã\83¼ã\82¶ã\83¼ã\81® ã\82¹ã\82±ã\82¸ã\83¥ã\83¼ã\83ªã\83³ã\82°å\84ªå\85\88度 (scheduling priority) ã\81® å\8f\96å¾\97ã\82\84è¨å®\9aã\82\92ã\81\9dã\82\8cã\81\9eã\82\8cè¡\8cã\81\86ã\80\82
+で指定されたプロセス、プロセスグループ、ユーザーの スケジューリング優先度 (scheduling priority) の 取得や設定をそれぞれ行う。
\fIwhich\fP の値は \fBPRIO_PROCESS\fP, \fBPRIO_PGRP\fP, \fBPRIO_USER\fP, のどれか一つで、 \fIwho\fP は
-\fIwhich\fP ã\81«å¿\9cã\81\98ã\81¦è§£é\87\88ã\81\95ã\82\8cã\82\8b (\fBPRIO_PROCESS\fP ã\81 ã\81¨ã\83\97ã\83ã\82»ã\82¹è\98å\88¥å\90ã\80\81 \fBPRIO_PGRP\fP ã\81 ã\81¨ã\83\97ã\83ã\82»ã\82¹ã\83»ã\82°ã\83«ã\83¼ã\83\97è\98å\88¥å\90ã\80\81
+\fIwhich\fP に応じて解釈される (\fBPRIO_PROCESS\fP だとプロセス識別子、 \fBPRIO_PGRP\fP だとプロセスグループ識別子、
\fBPRIO_USER\fP だと UID (ユーザID) と解釈される)。 \fIwho\fP がゼロならば、(それぞれ)呼び出したプロセス、
-å\91¼ã\81³å\87ºã\81\97ã\81\9fã\83\97ã\83ã\82»ã\82¹ã\81®ã\83\97ã\83ã\82»ã\82¹ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\80\81 å\91¼ã\81³å\87ºã\81\97ã\81\9fã\83\97ã\83ã\82»ã\82¹ã\81®å®\9fUID ã\82\92æ\84\8få\91³ã\81\99ã\82\8bã\80\82 \fIprio\fP ã\81¯ \-20 ã\81\8bã\82\89 19 ã\81®ç¯\84å\9b²ã\81®å\80¤ã\81§
+呼び出したプロセスのプロセスグループ、 呼び出したプロセスの実UID を意味する。 \fIprio\fP は \-20 から 19 の範囲の値で
(但し以下の注意の項を参照のこと)、 デフォルトの優先度は 0 である; 小さな数字ほど、有利なスケジューリングとなる。
\fBgetpriority\fP() コールは指定したプロセスの中の最も高い優先度 (数値的には最小の値) を返す。 \fBsetpriority\fP()
-ã\82³ã\83¼ã\83«ã\81¯æ\8c\87å®\9aã\81\97ã\81\9fã\83\97ã\83ã\82»ã\82¹å\85¨ã\81¦ã\81®å\84ªå\85\88度ã\82\92æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81«è¨å®\9aã\81\99ã\82\8bã\80\82 å\84ªå\85\88度ã\82\92ä»\8aã\82\88ã\82\8aå°\8fã\81\95ã\81\84å\80¤ã\81«è¨å®\9aã\81§ã\81\8dã\82\8bã\81®ã\81¯ã\82¹ã\83¼ã\83\91ã\83¼ã\83»ã\83¦ã\83¼ã\82¶ã\83¼ã\81 ã\81\91ã\81§ã\81\82ã\82\8bã\80\82
+コールは指定したプロセス全ての優先度を指定した値に設定する。 優先度を今より小さい値に設定できるのはスーパーユーザーだけである。
.SH 返り値
\fBgetpriority\fP() は成功した場合にも \-1 の値を返す可能性があるので、 呼び出しの前に外部変数の \fIerrno\fP
をクリアし、呼び出しの後に返り値の \-1 が正当な値か エラーかを判別する必要がある。 \fBsetpriority\fP() コールはエラーがなければ 0
\fBEACCES\fP
呼び出し元がプロセスの優先度を下げようとしたが、必要な特権を 持っていなかった (Linux の場合、 \fBCAP_SYS_NICE\fP
ケーパビリティがなかった)。 Linux 2.6.12 以降では、呼び出し元が、あるプロセスの優先度を、 変更対象のプロセスのリソース
-\fBRLIMIT_NICE\fP ã\81®ã\82½ã\83\95ã\83\88ã\83»ã\83ªã\83\9fã\83\83ã\83\88ã\81®ç¯\84å\9b²å¤\96ã\81«è¨å®\9aã\81\97ã\82\88ã\81\86ã\81¨ã\81\97ã\81\9få ´å\90\88ã\81«ã\81®ã\81¿ã\80\81 ã\81\93ã\81®ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\99ã\82\8bã\80\82詳細ã\81¯ \fBgetrlimit\fP(2)
+\fBRLIMIT_NICE\fP のソフトリミットの範囲外に設定しようとした場合にのみ、 このエラーが発生する。詳細は \fBgetrlimit\fP(2)
を参照。
.TP
\fBEPERM\fP
ではカーネルバージョンにより異なる。 Linux は、カーネル 2.6.23 以降で、nice 値の相対的な違いが、非常に強い影響を
与えるアルゴリズムを採用した。このアルゴリズムでは、 他に優先度の高いものがシステムに存在する時には、 非常に低い nice 値 (+19)
ではプロセスに本当にほとんど CPU が割り当てられない。 また、高い nice 値 (\-20) では CPU を必要とするアプリケーション (例えば
-ã\82ªã\83¼ã\83\87ã\82£ã\82ªã\83»ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³) ã\81« CPU ã\81®ã\81»ã\81¨ã\82\93ã\81©ã\81\8cå\89²ã\82\8aå½\93ã\81¦ã\82\89ã\82\8cã\82\8bã\80\82
+オーディオアプリケーション) に CPU のほとんどが割り当てられる。
\fBEPERM\fP が発生する条件の詳細はシステムに依存する。 上記の説明は POSIX.1\-2001 のものであり、全ての System V
風システムは これに従っているようである。 2.6.12 より前の Linux カーネルでは、呼び出し元の実 UID または 実効 UID がプロセス