你需要用sched_setaffinity(2)
.
例如,要仅在CPU 0和2上运行:
#define _GNU_SOURCE
#include <sched.h>
cpu_set_t mask;
CPU_ZERO(&mask);
CPU_SET(0, &mask);
CPU_SET(2, &mask);
int result = sched_setaffinity(0, sizeof(mask), &mask);
(第一个参数为0
表示当前进程,如果它是您想要控制的其他进程,请提供PID).
另见第sched_getcpu(3)
页.