Sunday, August 2, 2015

Trong Shell bạn dùng lệnh uname để lấy thông tin về host của mình đang sử dụng:


 $ uname  
 Linux  
 $ uname -a  
 Linux localhost.localdomain 3.18.6-100.fc20.x86_64 #1 SMP Fri Feb 6 22:55:01 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux  
 $   
 $ uname -i  
 x86_64  
   

Unix/Linux cung cấp các API:
 #include <unistd.h>  
 int gethostname(char *name, size_t namelen);  
+ name
Bufer, tên của host được trả về tại đây
+ namelen
Độc dài của buffer
+ return
Trả về 0 nếu thành công.

 #include <sys/utsname.h>  
 int uname(struct utsname *name);  

struct utsname:
 struct utsname {  
         char sysname[];  /* Operating system name (e.g., "Linux") */  
         char nodename[];  /* Name within "some implementation-defined  
                    network" */  
         char release[];  /* Operating system release (e.g., "2.6.28") */  
         char version[];  /* Operating system version */  
         char machine[];  /* Hardware identifier */  
       #ifdef _GNU_SOURCE  
         char domainname[]; /* NIS or YP domain name */  
       #endif  
       };  

+ name
Struct lưu trữ host information.
+ return
Trả về số > 0 nếu thành công; -1 nếu lỗi, kèm mã lỗi errno.

Ex:
hostget.c
 #include <sys/utsname.h>  
 #include <unistd.h>  
 #include <stdio.h>  
 #include <stdlib.h>  
   
 int main()  
 {  
   char computer[256];  
   struct utsname uts;  
   if(gethostname(computer, 255) != 0 || uname(&uts) < 0) {  
     fprintf(stderr, "Could not get host information\n");  
     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);  
   exit(0);  
 }  
   

Compile & Execute:
 $ gcc hostget.c   
 $ ./a.out   
 Computer host name is localhost.localdomain  
 System is Linux on x86_64 hardware  
 Nodename is localhost.localdomain  
 Version is 3.18.6-100.fc20.x86_64, #1 SMP Fri Feb 6 22:55:01 UTC 2015  


Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Lập trình hệ thống nhúng Linux . Powered by Luong Duy Ninh -