现在多CPU的趋势越来越大了. 有时候为了更好地操作机器, 需要将某个进程绑定到具体的CPU上去. 下面给出了一个进程绑定到具体的CPU上去的一个例子.

cpu.c

[CODE]#include
#include
#include
#include
#include
#define __USE_GNU#include
#include
#include
int main(int argc, char* argv[]){        int num = sysconf(_SC_NPROCESSORS_CONF);        int created_thread = 0;        int myid;        int i;        int j = 0;        cpu_set_t mask;        cpu_set_t get;        if (argc != 2)        {                printf("usage : ./cpu num\n");  //输入要绑定的CPU序号                exit(1);        }        myid = atoi(argv[1]);        printf("system has %i processor(s). \n", num);        CPU_ZERO(&mask);        CPU_SET(myid, &mask);        if (sched_setaffinity(0, sizeof(mask), &mask) == -1)  //绑定到CPU        {                printf("warning: could not set CPU affinity, continuing...\n");        }        while (1)        {                CPU_ZERO(&get);                if (sched_getaffinity(0, sizeof(get), &get) == -1)                {                        printf("warning: cound not get cpu affinity, continuing...\n");                }                for (i = 0; i < num; i++)                {                        if (CPU_ISSET(i, &get))                        {                                printf("this process %d is running processor : %d\n",getpid(), i);                        }                }        }        return 0;}