C++ 获取处理器相关性(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++) {

我正在尝试使用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++)
   {
      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;ios你忘记加载你的面具,你可以这样做:

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];