Chinaunix首页 | 论坛 | 博客
  • 博客访问: 205644
  • 博文数量: 91
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 15
  • 用 户 组: 普通用户
  • 注册时间: 2015-12-09 10:37
文章分类
文章存档

2016年(87)

2015年(4)

我的朋友

分类: LINUX

2016-05-11 16:24:08

【uname系统调用】

功能描述:
获取当前内核名称和其它信息。
用法:
#include


/* Put information about the system in NAME.  */
extern int uname (struct utsname *__name) __THROW;
参数:
__name:指向存放系统信息的缓冲区,原型如下

/* Structure describing the system and machine. */
struct utsname
  {
    /* Name of the implementation of the operating system. */
    char sysname[_UTSNAME_SYSNAME_LENGTH];   //当前操作系统名

    /* Name of this node on the network. */
    char nodename[_UTSNAME_NODENAME_LENGTH]; //网络上的名称

    /* Current release level of this implementation. */
    char release[_UTSNAME_RELEASE_LENGTH];   //当前发布级别


    /* Current version level of this release. */
    char version[_UTSNAME_VERSION_LENGTH];   //当前发布版本

    /* Name of the hardware type the system is running on. */
    char machine[_UTSNAME_MACHINE_LENGTH];   //当前硬件体系类型

#if _UTSNAME_DOMAIN_LENGTH - 0
    /* Name of the domain of this node on the network. */
# ifdef __USE_GNU
    char domainname[_UTSNAME_DOMAIN_LENGTH];   //当前域名
# else
    char __domainname[_UTSNAME_DOMAIN_LENGTH];
# endif
#endif
  };

返回说明:
成功执行时,返回0。失败返回-1,errno被设为EFAULT,表示buf无效。
关于uname的具体用法可以使用“man uname”来查看。

实例如下:
#include
#include
#include

int main()
{
    struct utsname testbuff;
    int fb=0;

    fb=uname(&testbuff);
    if(fb<0)
    {
        perror("uname");
        return 0;
    }else
    {
        printf(" sysname:%s\n nodename:%s\n release:%s\n version:%s\n machine:%s\n \n ",\
                    testbuff.sysname,\
                    testbuff.nodename,\
                    testbuff.release,\
                    testbuff.version,\
                    testbuff.machine);
#if _UTSNAME_DOMAIN_LENGTH - 0
# ifdef __USE_GNU
    printf(" domainame:%s\n ",testbuff.domainname);
    //char domainname[_UTSNAME_DOMAIN_LENGTH]; //当前域名
# else
    printf(" __domainame:%s\n ",testbuff.__domainname);
    //char __domainname[_UTSNAME_DOMAIN_LENGTH];
# endif
#endif
    }
return 0;
}

uname 作为Linux命令
  用途
  显示当前操作系统名称。
  语法
  uname [ -a | -x | -S Name ] [ -F ] [ -f ] [ -l ] [ -L ] [ -m ] [ -M ] [ -n ] [ -p ] [ -r ] [ -s ] [ -T Name ] [ -u ] [ -v ]
  描述
  uname 命令将正在使用的操作系统名写到标准输出中。
  机器 ID 号码包括以下数字格式的 12 个字符 xxyyyyyymmss。xx 位置指示系统且始终为 00。yyyyyy 位置包含整个系统的唯一标识号。mm 位置代表型号标识。ss 位置为子型号并且始终为 00。型号标识描述 CPU 平板标识,而不是描述整个系统的型号。
  有时可使用 uname -m 命令决定使用什么型号。以下列表并非全面。参考硬件供应商提供的文档以获取 E0-FF 范围内的值。并且注意并非所有的机器类型都有机器 ID。许多新机器都共享 4C 的公共机器 ID。系统型号十六进制代码(mm)为:
  机器 机器 机器
  类型 型号 标识
  7006 410 42
  7007 N40 F0
  7008 M20 43
  7008 M20A 43
  7009 C10 48
  7011 220 41
  7011 230 47
  7011 250 46
  7012 320 31
  7012 320H 35
  7012 340 37
  7012 350 38 或 77
  7012 355 77
  7012 360 76
  7012 365 76
  7012 370 75
  7012 375 75
  7012 380 58
  7012 390 57
  7012 G30 A6
  7012 G40 A7
  7013 520 30
  7013 520H 34
  7013 530 10
  7013 530H 18
  7013 540 14 或 11
  7013 550 1C
  7013 550L 77
  7013 560 5C
  7013 570 67
  7013 580 66
  7013 58H 71
  7013 590 70
  7013 590H 72
  7013 J30 A0
  7013 J40 A1
  7015 930 20 或 02
  7015 950 2E
  7015 970 63
  7015 970B 63
  7015 980 64
  7015 980B 64
  7015 990 80
  7015 R10 67
  7015 R20 72
  7015 R24 81
  7015 R30 A3
  7015 R40 A4
  7016 730 10
  7018 740 30
  7018 770 67
  7024 E20 C0
  7025 F30 C4
  7030 3AT 58
  7030 3BT 57
  7043 140 4C
  7043 240 4C
  7248 43P 4C
  当安装了新的操作系统软件级别时, uname 命令返回的机器标识符值可能改变。这一改变影响使用该值访问许可程序的应用程序。需要查看标识符,输入 uname -m 命令。
  如果应用程序受到影响,联系合适的支持组织。
  标志
  -a    显示 -m、 -n、 -r、 -s 和 -v 标志指定的所有信息。不能与 -x 或 -SName 标志连用。如果 -x 标志和 -a 标志一起指定,-x 标志会覆盖它。
  -F    显示由十六进制字符构成的系统标识字符串。此标识字符串对特定系统上的所有分区都是相同的。
  -f    除分区号还用于此字符串的计算之外,与 F 标志类似。产生的标识字符串对特定系统上的每个分区都是唯一的。
  -l    显示 LAN 网络号码。
  -L    显示 LPAR 号码和 LPAR 名称。如果 LPAR 不存在,“-1”显示为 LPAR 号码,NULL 为 LPAR 名称
  -m    显示硬件运行系统的机器 ID 号。
  注:
  -m 标志不能为 LPAR 环境中的分区生成唯一的机器标识。
  -M    显示系统型号名称。如果型号名称属性不存在,显示空字符串
  -n    显示节点名称。可能是用以标识系统且为 UUCP 通信网络所知的名称。
  -p    显示系统处理器的体系结构。
  -r    显示操作系统的发行版号。
  -s    显示系统名。标志缺省为开。
  -S Name      设置节点名。可以是系统 UUCP 通信网络名。
  -T Name      设置系统名。可以是系统 UUCP 通信网络名。
  -u    显示系统 ID 号码。如果这一属性未被定义,输出与 uname -m显示的输出一致。
  -v    显示操作系统版本。
  -x    显示 -a 标志指定的信息和 -l 标志指定的 LAN 网络号。
  如果输入标志无效, uname 命令退出,生成错误消息、错误返回状态,并无输出。
  注意:经过系统重新引导后,“uname”命令不保存新系统名和节点名称值。
  退出状态
  该命令返回以下退出值:
  0         请求信息成功写入。
  >0         发生错误。
  示例
  显示完整系统名和版本栏,输入:
  uname -a
  文件
  /usr/bin/uname         包含 uname 命令

阅读(1617) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~