setpriority() - プロセス・スケジューリング優先順位の設定

標準

標準/拡張機能 C/C++ 依存項目

XPG4.2
Single UNIX Specification、バージョン 3

両方  

形式

#define _XOPEN_SOURCE_EXTENDED 1
#include <sys/resource.h>

int setpriority(int which, id_t who, int priority);

機能説明

setpriority() は、プロセス、プロセス・グループ、またはユーザーの スケジューリング優先順位を設定します。

プロセスは、which および who 引数の値で指定されます。which 引数は、sys/resource.h 組み込みファイルで定義される、以下のシンボルのうちいずれか 1 つになります。
PRIO_PROCESS
who 引数をプロセス ID と解釈することを指示します。
PRIO_PGRP
who 引数をプロセス・グループ ID と解釈することを指示します。
PRIO_USER
who 引数をユーザー ID と解釈することを指示します。

who 引数は、ID (プロセス、プロセス・グループ、またはユーザー) を指定します。who 引数の 0 (ゼロ) 値は、現行プロセス、プロセス・グループ、またはユーザー ID を指定します。

priority 引数は、スケジューリング優先順位を指定します。これは、-20 ~ 19 までの範囲の符号付き整数として指定されます。負の優先順位のほうが、有利なスケジューリングになります。デフォルトの優先順位は、0 です。setrlimit() に指定された値がシステムの最下位サポート優先度の値より小さい場合には、システムの最下位サポート値が使用されます。システムの最高位サポート値より大きい場合には、システムの最高位サポート値が使用されます。プロセスのスケジューリング優先順位値の設定は、プロセス の nice 値に対し等しい効果を持ちます。これらが両方ともプロセス の相対 CPU 優先順位を表すためです。例えば、スケジューリング優先順位値をその最大値 (19) に設定することは 、nice 値をその最大値 ((2*NZERO)-1) にまで増加するのと等しい 効果があり、nice()、getpriority()、および setpriority() 関数 に反映されます。

複数のプロセスが指定されると、setpriority() は、すべての指定プロセスの優先順位を指定の値に設定します。

該当する特権があるプロセスだけが、その優先順位を下げることができます。

戻り値

正常に実行された場合、setpriority() は 0 を戻します。

正常に実行されなかった場合、setpriority() は -1 を戻して、errno を次のいずれかの 値に設定します。
エラー・コード
説明
EACCES
優先順位を低い値に変更中であり、現行プロセスに該当する特権がありません。
EINVAL
which 引数で指定されたシンボルが認識されなかったか、あるいは who 引数の値が、有効なプロセス ID、プロセス・グループ ID、またはユーザー ID ではありません。
ENOSYS
システムはこの関数をサポートしません。
EPERM
プロセスは、配置されましたが、実行プロセスの実ユーザー ID も実効ユーザー ID も、優先順位を変更する予定のプロセスの実効ユーザー ID と一致しません。
ESRCH
指定された which および who 引数の値を使って、プロセスを見つけることができませんでした。

関連情報