我正在尝试获取Android设备中在线核心数量的位图。我正在尝试使用C ++创建一个命令行工具,该工具根据有多少个核心来执行一些额外的功能,特别是哪些核心可用。
我尝试使用以下内容尝试在C ++中获取内核数量:
cpus = sysconf( _SC_NPROCESSORS_ONLN );
这给了我系统中的核心数,但没有核心当前打开的核心数。
有没有人知道这样做的潜在方法?
答案 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);