【发布时间】:2011-06-02 22:51:13
【问题描述】:
是否有 API 可以获取 Linux 中可用的 CPU 数量? 我的意思是,不使用 /proc/cpuinfo 或任何其他 sys-node 文件...
我使用 sched.h 找到了这个实现:
int GetCPUCount()
{
cpu_set_t cs;
CPU_ZERO(&cs);
sched_getaffinity(0, sizeof(cs), &cs);
int count = 0;
for (int i = 0; i < 8; i++)
{
if (CPU_ISSET(i, &cs))
count++;
}
return count;
}
但是,使用通用库没有更高层次的东西吗?
【问题讨论】:
-
为什么人们如此害怕使用 /proc?我在过去 15 年中看到的每一个 Linux 机器都有它,它总是与内核所知道的内容保持同步,并且其中现有内容的格式没有太大变化。
-
我认为您尝试学习不同的做事方式很好,但您是否想重新发明轮子?
-
对于 gnulib 系统,这确实通过查看 /proc 来工作,但如果你真的想要一个简单的单行并且没有主要的性能/安全考虑,你可以
(system("exit `nproc`") >> 8)...甚至busybox都有一个内部nproc,所以这在任何Linux上都应该没问题(例如,我的路由器固件......)。由于sh退出代码嵌入了一个尾随空字节,以便字符串处理友好,因此需要进行移位。 -
/proc 不可移植
标签: c linux multithreading cpu processor