作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在编写一个需要在单核上运行的程序。为了将它绑定(bind)到单核,我使用了 sched_setaffinity()
,但编译器给出了警告:
implicit declaration of function ‘sched_setaffinity’
我的测试代码是:
#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
}
你能帮我弄清楚吗?实际上代码是编译运行的,但我不确定它是在单核上运行还是在切换核上运行。
我使用的是 Ubuntu 15.10 和 gcc 5.2.1 版
最佳答案
您需要将 #define _GNU_SOURCE
移到顶部。在 man sched_setaffinity
它说:
#define _GNU_SOURCE /* See feature_test_macros(7) */
在 man 7 feature_test_macros
中它说:
NOTE: In order to be effective, a feature test macro must be defined before including any header files. This can be done either in the compilation command (cc -DMACRO=value) or by defining the macro within the source code before including any headers.
所以在一天结束时,您的代码应该如下所示:
#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
}
关于c - 函数 ‘sched_setaffinity’ 的隐式声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36794338/
我是一名优秀的程序员,十分优秀!