Linux系统信息

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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值