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

在Windows中,我读取registry项SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName以获取操作系统的全名和版本。

但在Linux中,代码

 struct utsname ver; uname(&ver); retVal = ver.sysname; 

返回stringlinux ,而不是Ubuntu 9.04

我怎样才能得到Linux发行版的名称和版本?

Solutions Collecting From Web of "如何获得Linux发行版的名称和版本?"

尝试:

 cat /etc/lsb-release 

你也可以试试

 lsb_release -a 

要么:

 cat /proc/version 
 lsb_release -ds ; uname -mr 

在我的系统上,从bash(终端)提示符处得到以下结果:

 Ubuntu 10.04.4 LTS 2.6.32-41-generic x86_64 

获取这些信息的目的是什么?

如果你试图检测系统的某些特性或属性(例如它是否支持一些系统调用或者是否有一些库),而不是依靠lsb_release的输出,你应该:

  • 尝试使用给定的功能和优雅地失败(例如,dlopen的图书馆,syscall(2)系统调用等)
  • 使其成为你的./configure检查的一部分(如果适用的话)(自动识别系统特性/属性的标准FOSS方式)

请注意,即使您的软件仅为二进制文件,上述第一种方法也适用。

一些代码示例:

  dl = dlopen(module_path, RTLD_LAZY); if (!dl) { fprintf(stderr, "Failed to open module: %s\n", module_path); return; } funcptr = dlsym(dl, module_function); if (!funcptr) { fprintf(stderr, "Failed to find symbol: %s\n", module_function); return; } funcptr(); dlclose(dl); 

您甚至可以优雅地测试CPU操作码支持,请参阅http://neugierig.org/software/chromium/notes/2009/12/flash-lahf.html,http://code.google.com/p/chromium/ 问题/细节?ID = 29789

不知道我跟着你究竟是什么,但我想你只是想“uname”的全部标志:

 uname -a 

通常:

 cat /etc/issue 

以这种方式尝试是比lsb-release更有趣,更少限制的。

 $ cat /etc/*-release