按照问题“How to get Linux distribution name and version?”,获得Linux发行版的名称和版本,这个工程:C++得到Linux版本的名称版本
lsb_release -a
在我的系统,它显示所需的输出:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 9.10
Release: 9.10
Codename: karmic
现在,要在C++中获得这些信息,Qt4的QProcess将是一个很好的选择,但由于我使用std C++开发没有Qt,所以我需要知道如何在标准C++中获得这些信息,即进程的stdout ,也是解析信息的一种方式。
Uptil now我试图使用来自here的代码,但是卡在函数read()中。通过包括头
#include <sys/utsname.h>
它已经返回名称&版本作为结构的一部分
int uname(struct utsname *buf);
:
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++开始外部过程?阅读其输出? ...请更具体,并显示你到目前为止。 – Mat 2011-06-11 11:41:33
更新........... – yolo 2011-06-11 12:02:42
找到答案http://stackoverflow.com/questions/6315666/c-get-linux-distribution-name-version/6316023#6316023 – yolo 2011-06-11 12:56:25