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

问题描述 投票:1回答:1

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

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

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

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

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

有谁知道如何完成这个简单的规范?

c linux cpu cpu-usage rtos
1个回答
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);
© www.soinside.com 2019 - 2024. All rights reserved.