如何检索C/Linux上的处理器数量?

And*_*anu 15 c parallel-processing posix

我正在编写一个小型C应用程序,它使用一些线程来处理数据.我希望能够知道某台机器上的处理器数量,而不使用system()和小脚本.

我能想到的唯一方法是解析/ proc/cpuinfo.任何其他有用的建议?

mga*_*lgs 10

正如其他人在评论中提到的,这个答案很有用:

numCPU = sysconf( _SC_NPROCESSORS_ONLN );
Run Code Online (Sandbox Code Playgroud)

留下可能会跳过评论的人们的解决方案......

  • @Aviv CPU 的数量不是恒定的硬件。它们是可热插拔的。 (2认同)

小智 6

为什么不使用sys/sysinfo.h?

#include <sys/sysinfo.h>
#include <stdio.h>
void main () {
   printf ("You have %d processors.\n", get_nprocs ());
}
Run Code Online (Sandbox Code Playgroud)

可以在手册页上找到更多信息

$ man 3 get_nprocs
Run Code Online (Sandbox Code Playgroud)

  • 根据该手册页,“这些函数是 GNU 扩展”。问题是关于一般的 C/Linux(并不总是使用 glibc),并且最好是关于 POSIX。 (2认同)