从存储器内部看uname结构

来源:互联网 发布:大数据优缺点 编辑:程序博客网 时间:2024/05/14 22:22

#include <sys/utsname.h>#include <stdio.h>#include <errno.h>#include <string.h>int main(){    struct utsname name;    if(uname(&name)==-1){            perror("uname error");        return -1;    }       size_t len=0;    char* addr=(char*)&name;    while(len<sizeof(struct utsname)){        if(*(addr+len)=='\0'){            ++len;            continue;       }        printf("%s ",addr+len);        len+=strlen(addr+len);    }    putchar('\n');    return 0;}

结果如下:
Linux XXX 3.19.0-61-generic #69~14.04.1-Ubuntu SMP Thu Jun 9 09:09:13 UTC 2016 x86_64 (none)
对于utsname结构的定义可直接到

struct utsname{    char sysname[_UTSNAME_SYSNAME_LENGTH];    char nodename[_UTSNAME_NODENAME_LENGTH];    char release[_UTSNAME_VERSION_LENGTH];    char machine[_UTSNAME_MACHINE_LENGTH];#if _UTSNAME_DOMAIN_LENGHT - 0#ifdef __USE_GNU    char domainame[_UTSNAME_DOMAIN_LENGTH];#else    char __domainname[_UTSNAME_DOMAIN_LENGTH];#endif#endif};

由此可知在Linux中utsname结构的对象存储器中存储形式如下:
内容 | sysname[] |: nodename[] |: release[] |: version[] |: machine[]: | ….. |
参考书:

0 0
原创粉丝点击