共计 1120 个字符,预计需要花费 3 分钟才能阅读完成。
这里要用到一个叫 uname 的函数,可以通过 man 2 uname 命令地行查看函数的说明:
DESCRIPTION
uname() returns system information in the structure pointed to by buf. The
utsname struct is defined in <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
};
我们可以看到需要一个 struct ustname 结构,该结构中可以获取到各种信息,我们来写一个测试程序试一试:
#include <sys/utsname.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
struct utsname test;
int fd = uname(&test);
if(fd < 0)
{ perror("uname error\n");
return -1;
}
else
{
printf("sysname=%s\nrelease=%s\nversion=%s\nmachine=%s\n",
test.sysname,test.release,test.version,test.machine);
}
return 0;
}
编译:gcc test.c -o test
运行:./test
在我的机器上输出了如下信息:
sysname=Linux
release=3.13.0-26-generic
version=#48-Ubuntu SMP Wed May 7 23:31:02 UTC 2014
machine=x86_64
