gpt4 book ai didi

linux - 如何从用户空间 C 代码中获取 Linux 内核模块列表?

转载 作者:太空狗 更新时间:2023-10-29 11:10:37 26 4
gpt4 key购买 nike

我想通过 C 代码获取内核模块列表,然后打印它们的版本。

从脚本中这很简单:

cat /proc/modules
lsmod

然后,为找到的所有驱动程序运行:

modinfo driver_name

从 C 代码,我可以打开 /proc/modules,并分析那里的数据,但是有没有更简单的方法来读取这个驱动程序列表?

最佳答案

From C code, I can open /proc/modules, and analyze the data there, but is there a simpler way of reading this drivers list?

取决于您对简单的定义。 Unix 领域中的一切都是文件的概念确实在一方面使一切变得更简单,因为:

int fd = open("/proc/modules" | O_RDONLY);

while ( read(fd, &buffer, BUFFER_LIMIT) )
{
// parse buffer
}

close(fd);

涉及与打开和读取任何文件相同的一组函数调用。

另一种机制是让内核在您进程的地址空间中分配一些内存以指向该信息(您可能可以通过自定义系统调用来做到这一点)但实际上没有必要 - 如您所见,这种方式不仅适用于 C,也适用于脚本。

关于linux - 如何从用户空间 C 代码中获取 Linux 内核模块列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9559010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com