スポンサーリンク

GETPRIORITY(2) FreeBSD システムコールマニュアル GETPRIORITY(2)

名称

getpriority, setpriority − プログラムスケジュール優先順位を取得 / 設定す る

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <sys/time.h>
#include <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 のどれかであり、 whowhich に関連して解釈さ れます (PRIO_PROCESS の場合はプロセス識別子、 PRIO_PGRP の場合はプロセス グループ識別子、および PRIO_USER の場合はユーザ ID)。 who の値が 0 である のは、現在のプロセス、プロセスグループ、またはユーザを表します。 prio 引 数は -20 から 20 の範囲の値です。デフォルトの優先順位は 0 です。優先順位 が低いと、スケジュール調整にはより都合がよくなります。

getpriority() システムコールは、指定のプロセスのいずれかが享受する最高の 優先順位を返してきます (最も小さい数値です)。 setpriority() システムコー ルは、指定されたすべてのプロセスの優先順位を指定の値に設定します。スーパ ユーザだけが優先順位を低くできます。

戻り値

getpriority() は処理を正しく完了しても値 -1 を返すことがあるので、呼び出 しの前に外部変数 errno をクリアしてから、後にこれをチェックして -1 がエ ラーであるか、または正当な値であるか判定する必要があります。

関数 setpriority() は、処理が成功すると値 0 を返します。そうでない場合、 値 -1 が返され、グローバル変数 errno が設定されてエラーを示します。

エラー

getpriority() と setpriority() システムコールは次の場合に失敗します:

       [ESRCH]

指定された whichwho の値を使用しているプロセスが見 つかりませんでした。

[EINVAL]
which
引数が PRIO_PROCESS, PRIO_PGRP または PRIO_USER のどれでもありませんでした。

上記のエラーだけでなく、 setpriority() は次の場合に失敗します:

[EPERM]
プロセスは検出されたものの、その実効 ID も実ユーザ ID のどちらも、呼び出し側の実効ユーザ ID に一致しませんで した。

[EACCES]
スーパユーザでないものがプロセスの優先順位を下げようと しました。

関連項目

nice(1), fork(2), renice(8)

歴史

getpriority() システムコールは 4.2BSD ではじめて登場しました。

FreeBSD 10.0 June 4, 1993 FreeBSD 10.0

スポンサーリンク