在Linux中的特定CPU上运行进程? (不能使用命令行指定)

时间:2019-02-13 00:50:40

标签: c linux cpu cpu-usage rtos

我正在尝试在Linux机器上定期在C程序中指定的特定CPU上运行进程。我不确定如何在程序中指定运行该进程所需的特定CPU。

我一直在阅读有关在命令行上执行此操作的方法,但在C本身的程序中如何执行此操作方面找不到很多。

我知道目录task_struct中有include/linux/sched.h。检查结构后,我会看到有关CPU的多个字段。但是我正在读(To access PCB of process in C),不建议或根本不建议访问任务/过程信息。

我也在阅读“当前”宏,但是我不确定这是否与我的问题有关。

我的程序非常简单,基本上只是一个测试,显示了如何在特定CPU上定期运行任务。

有人知道我如何完成这个简单的规范吗?

1 个答案:

答案 0 :(得分:3)

您要尝试做的事情就是线程固定。

您似乎想sched_setaffinity。您可以使用getpid()系统调用从应用程序内部调用它。

   #include <sched.h>

   int sched_setaffinity(pid_t pid, size_t cpusetsize,
                         const cpu_set_t *mask);

   int sched_getaffinity(pid_t pid, size_t cpusetsize,
                         cpu_set_t *mask);