linux下安装使用libuuid(uuid-generate)
2015-07-09 17:21
603 查看
linux下安装使用libuuid(uuid-generate)
linux下安装使用libuuid(uuid-generate)UUID简介安装libuuid库编写一个程序试一下代码编译运行UUID简介
UUID含义是通用唯一识别码(Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分。UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是
唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了
以太网卡地址、
纳秒级时间、
芯片ID码和许多可能的数字UUID由以下几部分的组合:当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。时钟序列。全局唯一的
IEEE机器识别号,如果有网卡,从网卡
MAC地址获得,没有网卡以其他方式获得。UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是
微软的GUID(Globals Unique Identifiers)。在ColdFusion中可以用
CreateUUID()函数很简单地生成UUID,其格式为:
xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每个
x是
0-9 a-f范围内的一个十六进制的数字。而标准的UUID格式为:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12)在linux下生成
UUID可以使用
libuuid的
uuid-generate函数
安装libuuid
库
libuuid是一个跨平台的开源的
uuid操作库。一般的机器上默认是没有,先安装一下。
sudo apt-get install uuid-dev也可以下载源码来安装,下载地址http://nchc.dl.sourceforge.net/project/libuuid/libuuid-1.0.3.tar.gz安装之后可以使用
man uuid_generate来查看一下使用方法这里先说一下
uuid_t这个类型。可以找到
uuid.h这个头文件,里面有一行
typedef unsigned char uuid_t[16];
#include <uuid.h>void uuid_generate(uuid_t out);void uuid_generate_random(uuid_t out);void uuid_generate_time(uuid_t out);int uuid_generate_time_safe(uuid_t out);还有一些别的函数,也在这里列出来。看函数名就指定这些函数的意思了,就不多解释。不明白之处找
manpages。
#include <uuid.h>//比较两个uuidint uuid_compare(uuid_t uu1, uuid_t uu2)//拷贝src到dstvoid uuid_copy(uuid_t dst, uuid_t src);//清除uu内容(清零)void uuid_clear(uuid_t uu);//判读uu是否为nullint uuid_is_null(uuid_t uu);//解析in指向的字符串形式内容到uuint uuid_parse( char *in, uuid_t uu);//将uu内容解析为字符串,保存到out数组void uuid_unparse(uuid_t uu, char *out);void uuid_unparse_upper(uuid_t uu, char *out);void uuid_unparse_lower(uuid_t uu, char *out);//将基于时间创建的uu在的时间部分解析出来time_t uuid_time(uuid_t uu, struct timeval *ret_tv)
编写一个程序试一下
代码
#include <stdio.h>#include <uuid/uuid.h>// gcc uuid.c -luuid -o uuidint main(){int i,n;uuid_t uu[4];char buf[1024];struct timeval tv;//1、uuid_generate(uu[0]);//2、uuid_generate_random(uu[1]);//3、uuid_generate_time(uu[2]);//4、n = uuid_generate_time_safe(uu[3]);printf("n = %d\n",n);for(i=0;i<4;++i){uuid_unparse(uu[i],buf);printf("uu[%d]\t\t%s\n",i,buf);}uuid_time(uu[2],&tv);printf("tv s:%lx u:%lx\n",tv.tv_sec,tv.tv_usec);return 0;}
编译运行
o@o-pc:~$ gcc uuid.c -luuido@o-pc:~$ ./a.outn = 0uu[0] 0867a44e-b481-4fde-9b3c-1767b60702b6uu[1] 3f39e123-288b-4cf1-adf2-77fb763530dfuu[2] b071a71e-261a-11e5-8513-28d24473abc3uu[3] b071a71f-261a-11e5-8513-28d24473abc3tv s:559e3b19 u:90543
相关文章推荐
- centos 记录用户行为轨迹
- 摘自ubuntuer-Linux防火墙iptables学习笔记(五)linux+iptables构筑防火墙实例
- centos安装pecl
- CentOS Rsync服务端与Windows cwRsync客户端实现数据同步配置方法
- 摘自ubuntuer- Linux防火墙iptables学习笔记(四)iptables实现NAT
- 使用 udev 管理 Linux 设备文件
- Linux-top命令详解
- 摘自ubantuer-Linux防火墙iptables学习笔记(三)iptables命令详解和举例
- 摘自ubantuer-Linux防火墙iptables学习笔记(二)参数指令
- linux free 命令解释学习
- linux内核的打印printk的级别
- 通过Linux 日志查看系统异常原因(一)
- 摘自ubuntuer-Linux防火墙iptables学习笔记(一)入门要领
- 【转】Linux系统平均负载3个数字的含义
- Centos 7.0 的VIM设置
- 浅析pc机上如何将vmlinuz-2.6.31-14-generic解压出vmlinux
- linux删除乱码
- CentOS 6.3 Rsync客户端与Win2003 cwRsyncServer服务端实现数据同步
- 关闭Linux(Centos 7.0)蜂鸣器
- Linux系统中如何添加自己的库文件路径