- Back to Home »
- Beginning Linux Programming »
- Host Information
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);
+ nameBufer, 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