获取Android设备C ++上的可用内核

时间:2014-10-16 00:05:38

标签: android c++ linux-kernel

我正在尝试获取Android设备中在线核心数量的位图。我正在尝试使用C ++创建一个命令行工具,该工具根据有多少个核心来执行一些额外的功能,特别是哪些核心可用。

我尝试使用以下内容尝试在C ++中获取内核数量:

cpus = sysconf( _SC_NPROCESSORS_ONLN ); 

这给了我系统中的核心数,但没有核心当前打开的核心数。

有没有人知道这样做的潜在方法?

2 个答案:

答案 0 :(得分:0)

这个问题没有明确的答案。

您可以使用nproc查看可用的核心数量,但这不会告诉您您在线拥有多少核心

您可以使用top查看每个核心的利用率。然后,您可以解析从top的信息,以推断当前正在使用的核心

答案 1 :(得分:0)

我能够通过以下方式获得核心在线状态:

int numCPU = 1; 
char *status = (char*)calloc(32,sizeof(char));
char *directory = (char*)calloc(1024,sizeof(char));    
sprintf(directory, "/sys/devices/system/cpu/cpu%d/online", numCPU);
FILE *online = fopen(directory, "r");
if(online)
{
   size = fread(status, sizeof(char), 32, online);
}
printf("Core %d status=%d", numCPU, status);