【发布时间】:2017-01-24 17:10:05
【问题描述】:
我正在尝试使用sched_setscheduler() 来设置给定进程的调度策略。根据其man page,可用标志为SCHED_FIFO,SCHED_RR,SCHED_OTHER,SCHED_BATCH,SCHED_IDLE。
除了SCHED_BATCH 和SCHED_IDLE,我可以使用所有的标志并成功编译我的程序。但是,使用SCHED_BATCH,我得到了
error: ‘SCHED_BATCH’ undeclared (first use in this function)
sched_setscheduler(getpid(),SCHED_BATCH,¶m);
说明我的问题的示例代码是:
#include<stdio.h>
#include<unistd.h>
#include<sched.h>
#include<time.h>
#include<stdlib.h>
#include<sys/types.h>
int main()
{
struct sched_param p;
p.sched_priority=0;
sched_setscheduler(getpid(),SCHED_BATCH,&p);
return 0;
}
如手册页所述,我创建了一个 typr sched_param 的对象,设置其适当的 sched_priority 值,并将其传递给函数。
我的 linux 内核版本是 4.4.40,我使用的是 Ubuntu 14.04.5 LTS。我的 gcc 版本是 6.2.0。
我该如何解决这个问题?
【问题讨论】:
标签: c linux operating-system scheduling