我正在尝试在Linux机器上定期在C程序中指定的特定CPU上运行进程。我不确定如何在程序中指定运行该进程所需的特定CPU。
我一直在阅读有关在命令行上执行此操作的方法,但在C本身的程序中如何执行此操作方面找不到很多。
我知道目录task_struct
中有include/linux/sched.h
。检查结构后,我会看到有关CPU的多个字段。但是我正在读(To access PCB of process in C),不建议或根本不建议访问任务/过程信息。
我也在阅读“当前”宏,但是我不确定这是否与我的问题有关。
我的程序非常简单,基本上只是一个测试,显示了如何在特定CPU上定期运行任务。
有人知道我如何完成这个简单的规范吗?
答案 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);