sched_setscheduler

設定調度策略
#include <sched.h>
int sched_setscheduler(pid_t pid, int policy,
const struct sched_param *param);
sched_setscheduler()函式將pid所指定進程的調度策略和調度參數分別設定為param指向的sched_param結構中指定的policy和參數。sched_param結構中的sched_priority成員的值可以為任何整數,該整數位於policy所指定調度策略的優先權範圍內(含邊界值)。policy參數的可能值在頭檔案中定義。
如果存在pid所描述的進程,將會為進程ID等於pid的進程設定調度策略和調度參數。
如果pid為零,將會為調用進程設定調度策略和調度參數。
如果進程pid含多個進程或輕量進程(即該進程是多進程的),此函式將影響進程中各個子進程。
更改其他進程的調度參數需要有相應的特權。調用進程必須具有相應的特權,或者是具有PRIV_RTSCHED許可權的組的成員,才能成功調用sched_setscheduler()。如果sched_setscheduler()函式成功地將pid所指定調度策略和調度參數分別設定為policy和結構param指定值 ,則該函式調用成功。
例子:更改調用進程以使用最強的FIFO優先權,如下所示:
#include <sched.h>
int main(int argc,char *argv[])
{
struct sched_param param;
int maxpri;
maxpri = sched_get_priority_max(SCHED_FIFO);//&raquo;&ntilde;&Egrave;&iexcl;×&icirc;&acute;ó&Ouml;&micro;
if(maxpri == -1)
{
perror("sched_get_priority_max() failed");
exit(1);
}
param.sched_priority = maxpri;
if (sched_setscheduler(getpid(), SCHED_FIFO, &param) == -1) //設定優先權
{
perror("sched_setscheduler() failed");
exit(1);
}
}

相關詞條

熱門詞條

聯絡我們