所有,

我试图查看运行C++程序的Linux风格是什么。

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

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

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

最佳答案

在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的输出,以及可能退回其他应用实用程序。

关于c++ - 以编程方式确定我正在运行的发行版,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32686490/

10-11 07:06