C言語システムコール-setpriority

setpriority

概要

setpriorityはプロセスの優先度を設定します。


Linuxの優先度の範囲は「-20〜19」であり、「-20」が最も高い優先度となります。

Linux本来のシステムコールでは「40(最大)〜1(最低)」という値が用いられていますが、getpriority()内で値が変更されます。

なお、FreeBSDの優先度の範囲は「-20〜20」です。


プロセスの優先度は「niceコマンド」で変更/指定します。


nice -1 ./command

サンプルプログラム


#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <sys/time.h>
#include <sys/resource.h>

static int
check_prioriry(void)
{
    int prio = 0;

    /* errnoを0クリアする必要がある */
    errno = 0;

    prio = getpriority(PRIO_PROCESS, 0);
    if(errno != 0){
        printf("Error: getpriority(%d) %s\n", errno, strerror(errno));
        return(-1);
    }
    printf("priority=%d\n", prio);
    return(0);
}

int
main(void)
{
    int rc = 0;

    rc = setpriority(PRIO_PROCESS, 0, 19);
    if(rc < 0){
        printf("Error: setpriority(%d) %s\n", errno, strerror(errno));
        return(-1);
    }

    rc = check_prioriry();
    if(rc != 0) return(-1);

    return(0);
}

関連ページ