C++ 获取 linux 发行版名称\版本

标签 c++ linux distribution

根据问题“How to get Linux distribution name and version?”,要获取 Linux 发行版名称和版本,这是可行的:

lsb_release -a

在我的系统上,它显示了所需的输出:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 9.10
Release:    9.10
Codename:   karmic

现在,要在 C++ 中获取此信息,Qt4 的 QProcess 将是一个不错的选择,但由于我在没有 Qt 的情况下使用标准 c++ 进行开发,我需要知道如何在标准 C++ 中获取此信息,即进程的标准输出,以及一种解析信息的方法。

到目前为止,我正在尝试使用来自 here 的代码但我坚持功能 read ().

最佳答案

你可以简单地使用函数:

int uname(struct utsname *buf);

通过包含标题

#include <sys/utsname.h>

它已经将名称和版本作为结构的一部分返回:

   struct utsname 
   {
       char sysname[];    /* Operating system name (e.g., "Linux") */
       char nodename[];   /* Name within "some implementation-defined network" */
       char release[];    /* OS release (e.g., "2.6.28") */
       char version[];    /* OS version */
       char machine[];    /* Hardware identifier */
       #ifdef _GNU_SOURCE
          char domainname[]; /* NIS or YP domain name */
       #endif
   };

我错过了什么吗?

关于C++ 获取 linux 发行版名称\版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6315666/

相关文章:

c++ - 使用编译器生成的默认初始化的成员初始化顺序

c++ - 内联汇编 - 使用 printf 以十进制显示寄存器?

linux - 为什么在 gdb 中使用 `info proc mappings` 时同一个共享库出现多次?

linux - 根据 .config 剥离 Linux 内核源

distribution - 用 6 面骰子计算赔率分布

algorithm - 根据计数均匀分布的颜色范围

c++ - 唯一指针的 Memset

c++ - 在STL容器中优先搜索的C++优雅方式

linux - 如何使用 monit 运行普通 C 程序

python - python 中 rnorm 的模拟