在c编程中不是最好的,这里是我第一次尝试将一个程序从python移植到c。
以下课程的学分Alnitak

#include<sched.h>

void task_set(int pid) {
        int result;
        cpu_set_t  mask;
        CPU_ZERO(&mask);
        CPU_SET(pid, &mask);
        result = sched_setaffinity(0, sizeof(mask), &mask);
        printf ("%d\n",result);
}

void main()
{ //excuse me for the static
task_set(1400);
}

为了编译我做了这个..
gcc -D_GNU_SOURCE -o test test.c

但是,当我尝试使用以下脚本返回并检查程序运行的位置时:
def which_core(pid):
        f = file(os.path.join('/proc', str(fpid), 'stat'), 'rb')
        val = f.read()
        f.close()
        return int(val.split(' ')[-6])
print 'core_id',which_core(1400)

它提供了以下输出:
core_id 32997376

那里很混乱…怎么了?

最佳答案

好啊。
这是一个人能做的最愚蠢的事!

    CPU_SET(pid, &mask);

    CPU_SET(coreid, &mask);

将pid更改为coreid即可。
另一个错误是:
    result = sched_setaffinity(pid, sizeof(mask), &mask);

关于c - 设置与进程的CPU亲和力-C-Linux,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17195105/

10-10 11:32