子进程会从父进程那里继承处理器亲和力,在默认情况下,进程可以运行在任何
CPU上。Linux提供两个系统调用来获取和设定进程的“硬亲和力”:
#define _GNU_SOURCE
#include
int sched_setaffinity(pid_t pid,size_t setsize,
const cpu_set_t *set);
int sched_getaffinity(pid_t pid,size_t setsize,
cpu_set_t *set);
调用sched_getaffinity()可以获得由“pid”指定的进程的处理器亲和力,保存在特定
类型cpu_set_t中,可以用特殊的宏来访问。如果pid值是0,则返回当前进程的亲
合力。参数setsize是cpu_set_t类型的大小,glibc用它来保证将来类型变化时依然
具有兼容性。成功时,函数sched_getaffinity()返回0;出错时,返回-1,并设置
errno值。代码示例如下:
编译:
运行: