使用C语言读取Linux内核版本?

9

我正在使用Ubuntu系统,想要查看内核版本。我在/proc/目录下找到了一个名为version的文件,记录了当前内核的版本。

如果我不想读取文件,是否有其他方法可以在C语言中读取版本号,例如内置函数?

谢谢。


2
为什么你不想读取文件? - icktoofay
@icktoofay - 因为这样做会非常低效。 - Geoffrey
6个回答

22
您可以使用 uname() 系统调用。

10

查看 uname 函数。它可以提供许多信息,而不需要解析一些 Linux 可执行文件的输出。


1
非常感谢,这正是我所需要的。感谢大家的支持。 - ipkiss
你能否在回答中实际包含该函数的名称,而不是将其隐藏在链接中? - Alnitak

7

您可以尝试使用uname函数。


0

这应该可以:

system("uname -r");

编辑:在终端中键入man uname,以获取您可以与uname一起使用的选项列表


7
这只是将信息打印到标准输出。为了在程序中使用它,最好使用系统调用。 - Thomas Padron-McCarthy

0

或者你可以阅读/proc/version,但是这不如直接调用uname(2)好。uname(2)对于C来说更自然。


-1

查看this文章,了解获取内核信息的基于shell的方法。您可以适当地使用system()调用来运行所有这些内容。但是我假设在您的情况下这还不够。您需要某种方式来解析shell输出。因此,请使用popen()调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接