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

标签 c linux cpu cpu-usage rtos

我试图在我的 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/

相关文章:

c++ - 访问硬编码数组和运行时初始化数组之间是否存在任何性能差异?

c - 段错误 : 11when using if condition

python - 从 Python 查询 CPU ID?

javascript - 为什么这个 Js/jquery 代码使用 %70 的 CPU?

c - 为什么可以通过重复计算来防止 nan ?

c - 释放 malloc 不会删除 char 数据

linux - 在不知道文件名的情况下合并排序的文件

linux - 如何在 linux (cent os) 中通过 sed 编辑特定行并替换文本

linux - 科学计算中的可重复性

macos - 通过PID获取进程的CPU使用率(顶级源代码)