Ich versuche sched_setscheduler()
zu verwenden, um die Scheduling-Richtlinie eines bestimmten Prozesses festzulegen. Gemäß seiner man page sind die verfügbaren Flags SCHED_FIFO,SCHED_RR,SCHED_OTHER,SCHED_BATCH,SCHED_IDLE
.Verwendung von Scheduling-Flags SCHED_BATCH oder SCHED_IDLE gibt Fehler
Außer SCHED_BATCH
und SCHED_IDLE
kann ich alle Flags verwenden und mein Programm erfolgreich kompilieren. Jedoch unter Verwendung von, sagen wir, SCHED_BATCH
, bekomme ich
error: ‘SCHED_BATCH’ undeclared (first use in this function)
sched_setscheduler(getpid(),SCHED_BATCH,¶m);
Ein Beispielcode, mein Problem zu veranschaulichen, ist:
#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;
}
Wie in der man-Seite erwähnt, habe ich ein Objekt von TYPR sched_param
erstellt, Set sein passender sched_priority
Wert und übergab es an die Funktion.
Meine Linux-Kernel-Version ist 4.4.40 und ich benutze Ubuntu 14.04.5 LTS. Meine GCC-Version ist 6.2.0.
Wie kann ich das beheben?
Vielen Dank! Das hat funktioniert. Könnten Sie mir bitte eine Referenz geben, damit ich mehr darüber erfahren kann? – GoodDeeds
Sie können POSIX doc [hier] (http://pubs.opengroup.org/onlinepubs/9699919799//basedefs/sched.h.html) überprüfen. AFAIC, die zusätzlichen Features/Erweiterungen, die durch '_GNU_SOURCE' aktiviert wurden, sind nicht sehr gut dokumentiert. Es ist meist in den einzelnen Manpages zu finden. –