gpt4 book ai didi

c - 使用调度策略标志 SCHED_BATCH 或 SCHED_IDLE 会产生错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:47:04 26 4
gpt4 key购买 nike

我正在尝试使用 sched_setscheduler() 来设置给定进程的调度策略。根据其 man page ,可用标志为 SCHED_FIFO,SCHED_RR,SCHED_OTHER,SCHED_BATCH,SCHED_IDLE

除了 SCHED_BATCHSCHED_IDLE,我能够使用所有标志并成功编译我的程序。然而,使用,比方说,SCHED_BATCH,我得到

error: ‘SCHED_BATCH’ undeclared (first use in this function)
sched_setscheduler(getpid(),SCHED_BATCH,&param);

说明我的问题的示例代码是:

#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_pa​​ram 对象,设置其适当的 sched_priority 值,并将其传递给函数。

我的 linux 内核版本是 4.4.40,我使用的是 Ubuntu 14.04.5 LTS。我的 gcc 版本是 6.2.0。

我该如何解决?

最佳答案

SCHED_BATCHSCHED_IDLE 是特定于 Linux 的,不是 POSIX 标准的一部分。

除非您定义 _GNU_SOURCE,否则 Glibc 不会公开它们。所以,做:

#define _GNU_SOURCE

在包含标题之前。

关于c - 使用调度策略标志 SCHED_BATCH 或 SCHED_IDLE 会产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41834234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com