这里要用到一个叫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
- 微信扫码赞助
- 支付宝赞助