当前位置: 首页 > 面试题库 >

如何使用C获取Linux中的CPU数量?

都浩淼
2023-03-14
问题内容

是否有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;
}

但是,使用通用库是否还没有更高的层次?


问题答案:
#include <stdio.h>
#include <sys/sysinfo.h>

int main(int argc, char *argv[])
{
    printf("This system has %d processors configured and "
        "%d processors available.\n",
        get_nprocs_conf(), get_nprocs());
    return 0;
}

https://linux.die.net/man/3/get_nprocs



 类似资料:
  • 问题内容: 我正在尝试获取%的总CPU使用率。首先,我首先要说“ top”根本不会做,因为cpu转储之间会有延迟,它需要2个转储和几秒钟的时间,这使我的程序挂起(我不想给它自己的线程) 我尝试的下一件事情是“ ps”,它是即时的,但总的总数总是很高(超过20),当我实际上让我的cpu做某事时,它保持在20左右… 还有其他方法可以获取总的CPU使用率吗?超过一秒还是更长的时间都没有关系……但是更长的

  • 问题内容: 如何在Linux系统中获取机器序列号和CPU ID? 示例代码受到高度赞赏。 问题答案: 这是Linux内核似乎使用的内容: 然后可以将其用作例如: 这篇Wikipedia文章中有关如何使用该指令的很好参考。 编辑 Wikipedia文章说,序列号是随Pentium III一起引入的,但是由于隐私问题,以后的型号中不再使用该序列号。在Linux系统上,您可以通过执行以下操作检查此功能(

  • 问题内容: 我有这个脚本,但是我不知道如何获取打印输出中的最后一个元素: 最后一个元素应该是CPU数量减1。 问题答案: 将计算以“处理器”开头的行数 对于具有超线程的系统,可以使用 应该返回(例如)(而上面的命令将返回)

  • 问题内容: 如何在程序中不使用环境(getenv,…)的情况下获取实际的“用户名”? 问题答案: 中 定义的函数返回用户名。请参阅以获取更多信息。 它的签名是: 不用说,可以在C或C ++中轻松调用此函数。

  • 问题内容: 大概有一个库或简单的asm blob,可以获取我正在执行的当前CPU的编号。 问题答案: 使用以确定在其上调用线程运行的CPU。请参阅(系统调用)和(库包装器)。但是,请注意其内容: 仅在调用时保证放置在cpu中的信息是最新的:除非已使用sched_setaffinity(2)修复了CPU关联性,否则内核可能随时更改CPU。(通常不会发生这种情况,因为调度程序会尝试最大程度地减少CPU

  • 问题内容: 我想以编程方式[在C中]为Linux中给定进程ID计算CPU使用率%。 如何获得给定进程的实时CPU使用率%? 为了进一步说明: 我应该能够确定所提供的processid或进程的CPU使用率。 该进程不必是子进程。 我想要“ C”语言的解决方案。 问题答案: 您需要从中解析出数据。这些是前几个字段(来自内核源代码): 您可能在和/或之后。您还需要从中读取行,如下所示: 这将告诉您已在各