1. 查看内核版本
# cat /proc/version
Linux version 3.13.0-24-generic (buildd@roseapple) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #46-Ubuntu SMP Thu Apr 10 19:08:14 UTC 2014
# uname -a
Linux ubuntu 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:08:14 UTC 2014 i686 i686 i686 GNU/Linux
2. 查看linux版本
# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04 LTS
Release: 14.04
Codename: trusty
# cat /etc/issue
Ubuntu 14.04 LTS \n \l
3. cpu信息
# file /bin/bash
/bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=312fb9ee274b849af53f7b6e8c0045a318f26d07, stripped
# cat /proc/cpuinfo //cpu相关信息
# getconf LONG_BIT //CPU运行模式
32
# arch
i686
4. 用户名
char *getlogin(void);
char *name = getlogin();
printf("getlogin: %s\n", name);
# ./a.out
getlogin: thomas
5. 主机名
hostname命令
int gethostname(char *name, size_t len);
int sethostname(const char *name, size_t len);
char name[100] = {0};
gethostname(name, sizeof(name));
printf("gethostname: %s\n", name);
# ./a.out
gethostname: ubuntu
6. 操作系统名称
int uname(struct utsname *buf);
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
};
struct utsname buf = {0};
uname(&buf);
printf("uname: %s %s %s %s %s\n", buf.sysname, buf.nodename, buf.release, buf.version, buf.machine);
# ./a.out
uname: Linux ubuntu 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:08:14 UTC 2014 i686
7. gethostbyname
根据主机名获得地址信息
struct hostent *gethostbyname(const char *name);
struct hostent
{
char *h_name; /* official name of host */
char **h_aliases; /* alias list */
int h_addrtype; /* host address type */
int h_length; /* length of address */
char **h_addr_list; /* list of addresses */
}
h_name:主机名
h_aliases:主机的别名
h_addrtype:地址类型(AF_INET/AF_INET6)
h_length:ip地址长度
h_addr_list:ip地址
struct hostent *host = gethostbyname("www.baidu.com");
if(host == NULL)
{
perror("gethostbyname.");
return -1;
}
printf("h_name: %s\n", host->h_name);
printf("h_aliases: %s\n", *host->h_aliases);
printf("h_addrtype: %d\n", host->h_addrtype);
printf("h_length: %d\n", host->h_length);
char addr[128] = {0};
inet_ntop(host->h_addrtype, *host->h_addr_list, addr, sizeof(addr));
printf("h_addr_list: %s\n", addr);
# ./a.out
h_name: www.a.shifen.com
h_aliases: www.baidu.com
h_addrtype: 2
h_length: 4
h_addr_list: 180.97.33.107
8. gethostbyaddr
根据地址获得地址信息
struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type);
gethostbyaddr(*host->h_addr_list, host->h_length, host->h_addrtype);