GETPRIORITY(2) | FreeBSD System Calls Manual | GETPRIORITY(2) |
名称
getpriority, setpriority — プログラムスケジュール優先順位を取得 / 設定するライブラリ
Standard C Library (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 のどれかであり、 who は、 which に関連して解釈されます ( PRIO_PROCESS の場合は、プロセス識別子、 PRIO_PGRP の場合は、プロセスグループ識別子、および PRIO_USER の場合は、ユーザ ID)。 who の値が 0 であるのは、現在のプロセス、プロセスグループ、またはユーザを表します。 prio 引数は、-20 から 20 の範囲の値です。デフォルトの優先順位は、0 です。優先順位が低いと、スケジュール調整にはより都合がよくなります。getpriority() システムコールは、指定のプロセスのいずれかが享受する最高の優先順位を返してきます (最も小さい数値です)。 setpriority() システムコールは、指定されたすべてのプロセスの優先順位を指定の値に設定します。スーパユーザだけが優先順位を低くできます。
戻り値
getpriority() は、処理を正しく完了しても値 -1 を返すことがあるので、呼び出しの前に外部変数 errno をクリアしてから、後にこれをチェックして -1 がエラーであるか、または正当な値であるか判定する必要があります。
The setpriority() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
エラー
getpriority() と setpriority() システムコールは、次の場合に失敗します:- [ ESRCH]
- 指定された which と who の値を使用しているプロセスが見つかりませんでした。
- [ EINVAL]
- which 引数が PRIO_PROCESS, PRIO_PGRP または PRIO_USER のどれでもありませんでした。
上記のエラーだけでなく、 setpriority() は、次の場合に失敗します:
- [ EPERM]
- プロセスは、検出されたものの、その実効 ID も実ユーザ ID のどちらも、呼び出し側の実効ユーザ ID に一致しませんでした。
- [ EACCES]
- スーパユーザでないものがプロセスの優先順位を下げようとしました。
歴史
getpriority() システムコールは、 4.2BSD ではじめて登場しました。June 4, 1993 | FreeBSD |