您需要使用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)
。