Search Suggest

Host Information

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


Đăng nhận xét