C++ 获取处理器相关性(linux)时遇到问题
我正在尝试使用CPU_ISSET()获取关联掩码并从中生成一个逗号分隔的字符串。然后,我需要在前面添加字符串“taskset-c”,在后面添加可执行文件,以便创建一个Linux命令 当我将cpu号添加到阵列并打印它时,输出不正确 我需要数组最终作为字符串输出,以便运行Linux命令C++ 获取处理器相关性(linux)时遇到问题,c++,linux,affinity,C++,Linux,Affinity,我正在尝试使用CPU_ISSET()获取关联掩码并从中生成一个逗号分隔的字符串。然后,我需要在前面添加字符串“taskset-c”,在后面添加可执行文件,以便创建一个Linux命令 当我将cpu号添加到阵列并打印它时,输出不正确 我需要数组最终作为字符串输出,以便运行Linux命令 int main() { cpu_set_t mask; int temp[FILENAME_MAX] for(int i = 0; i < CPU_SETSIZE; i++) {
int main() {
cpu_set_t mask;
int temp[FILENAME_MAX]
for(int i = 0; i < CPU_SETSIZE; i++)
{
if(CPU_ISSET(i, &mask))
{
temp[i] = i;
}
}
for(int i: temp)
os << i;
string str(os.str());
cout << str;
return 0;
}
intmain(){
cpu设置屏蔽;
int temp[文件名\最大值]
对于(int i=0;i os你忘记加载你的面具,你可以这样做:
sched_getaffinity (getpid (), CPU_SETSIZE, &mask);
就这些
编辑:
我以前没有注意到,但即使在编辑之后,这些循环也有缺陷。对于第一个循环,请执行以下操作:
for (int i = 0; i < CPU_SETSIZE; i++)
temp [i] = (CPU_ISSET (i, &mask)) ? i : -1;
然后你应该开始得到一些合理的结果
建议:更多地关注细节。如果你不这样做,你将一事无成。接受这个答案会很好,因为我已经为你整理好了一切。好的,我发现我忘记了将它设置为核心(CPU设置(&mask)),但字符串仍然无法打印。有什么想法吗?你不需要做任何类似的事情(这有什么帮助?)只需在第一次循环之前插入上面的代码行,并按照我修改后的帖子中的详细说明修复其余代码,就可以开始工作了。哦,请发布至少可以编译的代码。Thx。对不起,@pang,但我的帖子还是很好的。
for (int i : temp)
{
if (i >= 0)
os << i;
}
int temp [CPU_SETSIZE];