函数uname、gethostname
uname获取当前内核名称和其它信息。
#include <sys/utsname.h>
int uname(struct utsname *buf);
参数:
buf:指向存放系统信息的缓冲区,原型如下
struct utsname {
char sysname[];
char nodename[];
char release[];
char version[];
char machine[];
#ifdef _GNU_SOURCE
char domainname[];
#endif
};
结构体内的数组长度未指定,不过都以null字节结尾。
gethostname返回本地主机的标准主机名。
#include <unistd.h>
int gethostname(char *name, size_t len);
参数说明:
这个函数需要两个参数:
接收缓冲区name,其长度必须为len字节或是更长,存获得的主机名。
接收缓冲区name的最大长度
返回值:
如果函数成功,则返回0。如果发生错误则返回-1。错误号存放在外部变量errno中。
测试程序
#include<stdio.h>
#include<sys/types.h>
#include<sys/utsname.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{
struct utsname *name;
name = malloc(sizeof(struct utsname)*20);
char csname[20];
int res = uname(name);
printf("machine:%s\n",name->machine);
printf("nodename:%s\n",name->nodename);
printf("sysname:%s\n",name->sysname);
printf("version:%s\n",name->version);
res = gethostname(csname,20);
printf("\nhostname:%s\n",csname);
return 0;
}