获取当前Linux/Mac的系统信息可以通过函数uname来实现。

#include <sys/utsname.h>
int uname(struct utsname *name);

#define    _SYS_NAMELEN    256
struct    utsname {
    char    sysname[_SYS_NAMELEN];    /* [XSI] Name of OS */
    char    nodename[_SYS_NAMELEN];    /* [XSI] Name of this network node */
    char    release[_SYS_NAMELEN];    /* [XSI] Release level */
    char    version[_SYS_NAMELEN];    /* [XSI] Version level */
    char    machine[_SYS_NAMELEN];    /* [XSI] Hardware type */
};

如上所示,通过函数uname可以获得以上五种信息:
sysname : 当前系统OS名称。
nodename: 网络节点名称。
release : 当前系统版本号。
version : 当前系统版本详细信息。
machine : 硬件类型。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <sys/utsname.h> //uname
int main/*07*/ (int argc, char ** argv) {
struct utsname u;
if (uname(&u) != -1) {
printf("获取当前系统的信息如下\n"
"sysname:%s\n"
"nodename:%s\n"
"release:%s\n"
"version:%s\n"
"machine:%s\n"
, u.sysname, u.nodename, u.release, u.version, u.machine);
}
}

运行效果如下图:

uname.sysinfo