J'essaie d'utiliser sched_setscheduler()
pour définir la politique d'ordonnancement d'un processus donné. Selon son man page, les indicateurs disponibles sont SCHED_FIFO,SCHED_RR,SCHED_OTHER,SCHED_BATCH,SCHED_IDLE
.L'utilisation des indicateurs de stratégie d'ordonnancement SCHED_BATCH ou SCHED_IDLE donne une erreur
Sauf pour SCHED_BATCH
et SCHED_IDLE
, je suis en mesure d'utiliser tous les drapeaux et compiler avec succès mon programme. Cependant, en utilisant, par exemple, SCHED_BATCH
, je reçois
error: ‘SCHED_BATCH’ undeclared (first use in this function)
sched_setscheduler(getpid(),SCHED_BATCH,¶m);
Un exemple de code pour illustrer mon problème est:
#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;
}
Comme mentionné dans la page de manuel, j'ai créé un objet de typr sched_param
, ensemble sa valeur sched_priority
appropriée et l'a transmise à la fonction.
Ma version du noyau Linux est 4.4.40 et j'utilise Ubuntu 14.04.5 LTS. Ma version gcc est 6.2.0.
Comment résoudre ce problème?
Merci! Ça a marché. Pourriez-vous s'il vous plaît me diriger vers une référence afin que je puisse en lire plus à ce sujet? – GoodDeeds
Vous pouvez consulter le document POSIX [ici] (http://pubs.opengroup.org/onlinepubs/9699919799//basedefs/sched.h.html). AFAIC, les fonctionnalités/extensions supplémentaires activées par '_GNU_SOURCE' ne sont pas très bien documentées. Il se trouve principalement dans les pages man individuelles. –