我在用着Linux 3.5.0-17-generic #28-Ubuntu SMP Tue Oct 9 19:31:23 UTC 2012 x86_64 GNU/Linux
,我需要#include<linux/getcpu.h>
。编译器抱怨找不到该文件。 Linux的头文件在哪里?
简短的回答:通常,您不会直接包含这些标头。
大多数操作系统/机器特定的标头都会自动包含在更通用的标头中。那些不支持的功能仅适用于 Linux,对于您正在运行的版本可能可用,也可能不可用。
As to getcpu
,有一个更标准化的版本称为sched_getcpu
这是发现于sched.h
并具有相同的功能。
或者,您可以测试系统调用在您的系统上是否可用并手动调用:
#define _GNU_SOURCE
#include <unistd.h>
#include <sys/syscall.h>
static inline int getcpu() {
#ifdef SYS_getcpu
int cpu, status;
status = syscall(SYS_getcpu, &cpu, NULL, NULL);
return (status == -1) ? status : cpu;
#else
return -1; // unavailable
#endif
}
变量错误号(#include <errno.h>
) 如果系统调用返回 -1,则给出错误代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)