#include <sys/utsname.h> #include <unistd.h> #include <stdio.h> int main() { char computer[256]; struct utsname uts; if(gethostname(computer,256)!=0 || uname(&uts)<0) { exit(1); } printf("Computer host name is %s\n",computer); printf("System is %s on %s hardware\n",uts.sysname,uts.machine); printf("Nodename is %s\n",uts.nodename); printf("Version is %s, %s\n",uts.release,uts.version); return 0; }
函数原型:
#include <unistd.h>
int gethostname(char *name,size_t namelen);
把机器的网络名写到name里,字符串至少有namelen这么长。成功返回0,否则返回-1。
#include <sys/utsname.h>
int uname(struct utsname* name);
把主机资料写到一个由name指向的一个结构体里。
utsname结构体数据元素:
char sysname[];操作系统的名字
char nodename[];主机的名字
char release[];系统的发行级
char version[];系统的版本号
char machine[];硬件类型
成功返回非负整数,失败返回-1。
注:
许可证问题:
#include <unistd.h>
long gethostid(void);能返回一个主机独一无二的值,保证软件许可证。