天天看點

使用uname()得到主機名

以下是例程。編譯後隻需要調用就可以了。程式很簡單,看一下就知道uname()如何使用了。其中,涉及到一個utsname的結構。先解釋一下:

struct utsname{

 char sysname[_UTS_NAMESIZE]; 

 char nodename[_UTS_NODESIZE];

 char release[_UTS_NAMESIZE]; 

 char version[_UTS_NAMESIZE]; 

 char machine[_UTS_NAMESIZE]; 

};

#include <sys/utsname.h>

#include <netdb.h>

#include <sys/socket.h>

int main(int argc, char **argv)

{

 struct hostent *hptr;

 struct utsname myname;

 char **pptr;

 char str[32];

 if(uname(&myname)<0)

 {

  printf("uname calling error/n");

  return 1;

 }

 printf("localhost name:%s/n",myname.nodename);

 if( (hptr = gethostbyname(myname.nodename)) == NULL)

 {

  printf("gethostbyname calling error/n");

  return 1;

 }

 pptr=hptr->h_addr_list;

 for(;*pptr!=NULL;pptr++)

  printf("  address:%s/n", inet_ntop(hptr->h_addrtype, *pptr, str, sizeof(str)));

 return 0;

}