从 utsname 中找出 Linux 操作系统名称
Posted
技术标签:
【中文标题】从 utsname 中找出 Linux 操作系统名称【英文标题】:Figure out Linux OS name from utsname 【发布时间】: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
【问题讨论】:
我认为这篇文章可能有用。 ***.com/questions/6315666/… 你在什么编程环境上编码? 【参考方案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 结构中的值到操作系统名称的映射的帮助。以上是关于从 utsname 中找出 Linux 操作系统名称的主要内容,如果未能解决你的问题,请参考以下文章
如何从信号中找出进程的 pid 在 linux 的 c++ 中启动?
如何在 Linux 平台上找出我的 Web 浏览器用于从 Web 服务器接收数据包的端口?