11.3. ライブラリー呼び出しを使用した優先度の設定
以下のライブラリー呼び出しは、リアルタイム以外のプロセスの優先度を設定するために使用されます。
nicegetprioritysetpriority
これらの関数は、リアルタイム以外のプロセスの nice 値 を取得および調整します。nice 値 は、プロセッサー上で実行可能なリアルタイム以外のプロセスの一覧を順序付ける方法についてスケジューラーに提案されます。一覧の先頭にあるプロセスは、その後に戻るよりも早く実行します。
リアルタイムプロセスは、異なるライブラリーコールのセットを使用してポリシーおよび優先度を制御します。これは、本セクションで説明します。
重要
以下の関数はすべて、
sched.h ヘッダーファイルを含める必要があります。関数から常に戻りコードを確認するようにしてください。適切な man ページには、使用されるさまざまなコードの概要が記載されています。
11.3.1. sched_getscheduler
sched_getscheduler() 関数は、指定 PID のスケジューラーポリシーを取得します。
#include <sched.h> int policy; policy = sched_getscheduler(pid_t pid);
シンボル
SCHED_OTHER、SCHED_RR および SCHED_FIFO は sched.h 定義されています。これらは定義されたポリシーを確認するか、またはポリシーの設定に使用できます。
#include <stdio.h>
#include <unistd.h>
#include <sched.h>
main(int argc, char *argv[])
{
pid_t pid;
int policy;
if (argc < 2)
pid = 0;
else
pid = atoi(argv[1]);
printf("Scheduler Policy for PID: %d -> ", pid);
policy = sched_getscheduler(pid);
switch(policy) {
case SCHED_OTHER: printf("SCHED_OTHER\n"); break;
case SCHED_RR: printf("SCHED_RR\n"); break;
case SCHED_FIFO: printf("SCHED_FIFO\n"); break;
default: printf("Unknown...\n");
}
}