我试图在我的 Linux 机器上定期在我的 C 程序中指定的特定 CPU 上运行一个进程。我不确定如何在我的程序中指定进程需要运行的特定 CPU。
我一直在阅读有关在命令行上执行此操作的方法,但我找不到太多关于如何在 C 本身的程序中执行此操作的信息。
我知道 include/linux/sched.h
目录中有 task_struct
。检查该结构后,我看到了多个有关 CPU 的字段。但我正在阅读 ( To access PCB of process in C ) 访问任务/进程信息是不被建议的,或者根本不那么容易。
我也在阅读“当前”宏,但我不确定这是否与我的问题相关。
我的程序非常简单,基本上只是一个测试,展示了我如何在某个 CPU 上定期运行任务。
有谁知道我如何完成这个简单的规范?
最佳答案
您尝试做的这件事称为线程固定。
看起来你想要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);
关于c - 在 Linux 中的特定 CPU 上运行进程? (不能用命令行指定),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54660901/