以编程方式确定我正在运行的发行版

时间:2015-09-21 02:28:20

标签: c++ linux

ALL,

我试图了解我在运行我的C ++程序时的Linux风格。

我找到了this answer on SO suggesting the uname program,但是人们通常不想解析C ++代码中某些实用程序的输出。

现在我可以在配置中进行这样的测试了,但是我对我的程序的用户操作系统感兴趣,而不是我编译可能完全不同的地方(我个人喜欢Gentoo,但是没有人能保证我的客户会拥有它。)

那么有没有可靠的方法从C ++程序中确定Linux发行版的名称?

1 个答案:

答案 0 :(得分:1)

在Unix Stack Exchange上回应这个问题https://unix.stackexchange.com/questions/6345/how-can-i-get-distribution-name-and-version-number-in-a-simple-shell-script的最佳答案:

稍微好于执行命令并解析它会告诉你的代码解析文件/ etc / lsb-release,看起来像这样:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"

DISTRIB_ID行是包含发行版名称的行。 警告,根据lsb-release man page,此行是可选的。但是,许多发行版的最新版本(包括Mint,Ubuntu,Redhat和是的Gentoo)在/ etc / lsb-release文件中包含DISTRIB_ID。

鉴于这些警告,您可能会发现解析lsb-release对您的目的来说已经足够好了,但是对于最广泛的覆盖范围,您必须咬住子弹并执行并解析相关实用程序lsb_release的输出,以及可能回到其他公用事业。