为什么用sched_setscheduler设置子程序的优先级不成功?
源码:
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<sched.h>
#include<sys/time.h>
#include<sys/resource.h>
int main(int argc,char *argv[])
{
unsigned int i=0,j=0,k=0,h;
int pid[1];
struct sched_param p[1];
for(i=0;i<1;i++)
{
if((pid[i]=fork())>0)
{
p[i].sched_priority=99;
h=sched_setscheduler(pid[i],SCHED_FIFO,&p[i]);
if(errno)
perror("sched_setscheduler");
while(k<1)
{
k++;
sched_getparam(0,p);
if(errno)
perror("sched_getparam");
printf("Child %d policy is %d, prio: %d, return: %d\n",getpid(),sched_getscheduler(pid[i]),p[0].sched_priority,h);
}
}
else{
while(j<1)
{
j++;
sched_getparam(0,p);
if(errno)
perror("sched_getparam");
printf("Perant PID =%d, policy:%d, prio:%d\n",getpid(),sched_getscheduler(getpid()),p[0].sched_priority);
}
}
}
return EXIT_SUCCESS;
}
执行结果:
Perant PID =7123, policy:0, prio:0
Child 7122 policy is 1, prio: 0, return: 0
为什么优先级都是0?子程序我明明设的是99