【问题标题】:Figure out Linux OS name from utsname从 utsname 中找出 Linux 操作系统名称
【发布时间】:2018-09-26 07:44:28
【问题描述】:

我正在尝试从 c++ 代码中获取 Linux 操作系统名称(例如,“Ubuntu 16.04”、“Ubuntu 14.04”等)。我开始了解 utsname 并尝试使用它。但是结构字段 sysname、release、version 等中的值描述性太强,我想要一些简单的东西(比如“Ubuntu 16.04”、“Ubuntu 14.04”等)。是否有一些文档可以将 utsname 结构中的值映射到一些简单的名称?

utsname 结构的字段值:

sysname: Linux
nodename: ubuntu16-server
release: 4.4.0-130-generic
version: #156-Ubuntu SMP Thu Jul 29 23:11:20 UTC 2017
machine: x86_64

【问题讨论】:

标签: c++ linux ubuntu


【解决方案1】:

在终端试试这个命令:

    cat /etc/os-release
NAME="Ubuntu"
VERSION="14.04.5 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.5 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

或者这个:

    cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.5 LTS"

我不知道你在什么编程环境下编写代码。所以你可能需要一个Process 来执行并返回终端命令,然后你需要解析输出。 (如果需要,也可以在终端中使用 cat 命令完成解析)

【讨论】:

  • 如果我对OP的理解正确,获取系统信息和解析应该是从编译好的程序中。生成系统外壳当然是可能的,但这既不是好的解决方案,也不是预期的解决方案。
  • 我知道这个解决方案。但我的问题不同;我特别想使用 utsname 来获取操作系统名称,这可能需要一些从 utsname 结构中的值到操作系统名称的映射的帮助。
猜你喜欢
  • 2013-03-12
  • 1970-01-01
  • 2011-01-27
  • 1970-01-01
  • 2018-10-26
  • 1970-01-01
  • 2015-01-15
  • 2016-01-13
  • 1970-01-01
相关资源
最近更新 更多