sched_setscheduler()
을 사용하여 주어진 프로세스의 스케줄링 정책을 설정하려고합니다. 해당 man page에 따라 사용 가능한 플래그는 SCHED_FIFO,SCHED_RR,SCHED_OTHER,SCHED_BATCH,SCHED_IDLE
입니다.스케줄 정책 플래그 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
값을 가져 와서 함수에 전달합니다.
제 리눅스 커널 버전은 4.4.40이고, 우분투 14.04.5 LTS를 사용하고 있습니다. 내 gcc 버전은 6.2.0입니다.
어떻게 해결할 수 있습니까?
고마워요! 그게 효과가 있었어. 좀 더 자세한 내용을 읽을 수 있도록 참조 할 수있게 해주시겠습니까? – GoodDeeds
POSIX doc [here] (http://pubs.opengroup.org/onlinepubs/9699919799//basedefs/sched.h.html)을 확인할 수 있습니다. AFAIC,'_GNU_SOURCE'에 의해 가능해진 추가적인 특징/확장은 잘 설명되어 있지 않습니다. 이것은 대개 개별 man 페이지에서 찾아 볼 수 있습니다. –