隐式声明函数'sched_setaffinity'

时间:2016-04-22 12:50:23

标签: c linux ubuntu gcc scheduled-tasks

我正在编写一个需要在单核上运行的程序。要将它绑定到单核,我使用#include <stdio.h> #include <unistd.h> #define _GNU_SOURCE #include <sched.h> int main() { unsigned long cpuMask = 2; sched_setaffinity(0, sizeof(cpuMask), &cpuMask); printf("Hello world"); //some other function calls } ,但编译器发出警告:

  

var alpha = parameters.alpha;

我的测试代码是:

context.fillStyle = clearColor.getStyle();
你能帮我解决一下吗?实际上代码是经过编译和运行的,但我不确定它是在单核上运行还是在切换内核。

我正在使用Ubuntu 15.10和gcc版本5.2.1

1 个答案:

答案 0 :(得分:8)

您需要将#define _GNU_SOURCE移至顶部。在man sched_setaffinity中它说:

 #define _GNU_SOURCE             /* See feature_test_macros(7) */

man 7 feature_test_macros中说:

  

注意:为了有效,必须定义功能测试宏   在包含任何头文件之前。这可以在   编译命令(cc -DMACRO = value)或通过定义宏   包含任何标题之前的源代码。

所以在一天结束时你的代码应该是这样的:

#define _GNU_SOURCE
#include <stdio.h>
#include <unistd.h>
#include <sched.h>


int main()
{
    unsigned long cpuMask = 2;
    sched_setaffinity(0, sizeof(cpuMask), &cpuMask);
    printf("Hello world");
    //some other function calls
}