进程和cpu绑定

时间:2022-04-22 08:13:44
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. #include<sys/types.h>
  4. #include<sys/sysinfo.h>
  5. #include<unistd.h>
  6. #define __USE_GNU
  7. #include<sched.h>
  8. #include<ctype.h>
  9. #include<string.h>
  10. int main(int argc, char* argv[])
  11. {
  12. int num = sysconf(_SC_NPROCESSORS_CONF);
  13. int created_thread = 0;
  14. int myid;
  15. int i;
  16. int j = 0;
  17. cpu_set_t mask;
  18. cpu_set_t get;
  19. if (argc != 2)
  20. {
  21. printf("usage : ./cpu num/n");
  22. exit(1);
  23. }
  24. myid = atoi(argv[1]);
  25. printf("system has %i processor(s). /n", num);
  26. CPU_ZERO(&mask);
  27. CPU_SET(myid, &mask);
  28. if (sched_setaffinity(0, sizeof(mask), &mask) == -1)
  29. {
  30. printf("warning: could not set CPU affinity, continuing.../n");
  31. }
  32. while (1)
  33. {
  34. CPU_ZERO(&get);
  35. if (sched_getaffinity(0, sizeof(get), &get) == -1)
  36. {
  37. printf("warning: cound not get cpu affinity, continuing.../n");
  38. }
  39. for (i = 0; i < num; i++)
  40. {
  41. if (CPU_ISSET(i, &get))
  42. {
  43. printf("this process %d is running processor : %d/n",getpid(), i);
  44. }
  45. }
  46. }
  47. return 0;
  48. }