ALL,
我试图了解我在运行我的C ++程序时的Linux风格。
我找到了this answer on SO suggesting the uname program,但是人们通常不想解析C ++代码中某些实用程序的输出。
现在我可以在配置中进行这样的测试了,但是我对我的程序的用户操作系统感兴趣,而不是我编译可能完全不同的地方(我个人喜欢Gentoo,但是没有人能保证我的客户会拥有它。)
那么有没有可靠的方法从C ++程序中确定Linux发行版的名称?
答案 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
的输出,以及可能回到其他公用事业。