如何获得Linux发行版的名称和版本?

Dmi*_*riy 15 c c++ linux api

在Windows中,我读取了注册表项SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName以获取操作系统的全名和版本.

但在Linux中,代码

struct utsname ver;
uname(&ver);
retVal = ver.sysname;
Run Code Online (Sandbox Code Playgroud)

返回字符串linux,而不是Ubuntu 9.04.

如何获取Linux发行版的名称和版本?

the*_*der 34

尝试:

cat /etc/lsb-release
Run Code Online (Sandbox Code Playgroud)

你也可以试试

lsb_release -a
Run Code Online (Sandbox Code Playgroud)

要么:

cat /proc/version
Run Code Online (Sandbox Code Playgroud)

  • +1这最终在发行版中被"标准化"了.回过头但这个文件不存在,而是每个发行版都把自己的文件放在/ etc/redhat-release中. (6认同)
  • 这仅适用于符合LSB的Linux发行版,但不保证可以在不兼容的发行版上运行.OTOH,它也适用于*其他*LSB兼容的非Linux Unices.例如,我很确定它不适用于Adroid. (5认同)

mda*_*mda 6

lsb_release -ds ; uname -mr
Run Code Online (Sandbox Code Playgroud)

在我的系统上从bash(终端)提示符产生以下内容:

Ubuntu 10.04.4 LTS
2.6.32-41-generic x86_64
Run Code Online (Sandbox Code Playgroud)


oll*_*314 5

尝试这种方式很有趣,而且比 lsb-release 限制更少。

$ cat /etc/*-release
Run Code Online (Sandbox Code Playgroud)