Linux下生成UUID的C语言实现(linuxcuuid)
Linux下生成UUID的C语言实现
UUID(Universally Unique Identifier)在很多场景下应用较广泛,它是128位16字节的数字,UUID可以说是全世界所有人为参与者都共同遵守的一种统一的命名约定,UUID的设计目的是为了保证它能够全局唯一。
出于安全或其他目的,程序中经常需要生成UUID,这里给出具体的实现方法:
在C语言中,可以使用linux库函数uuid_generate来生成UUID,它位于libuuid.so中,如果程序中需要用到它,则需要增加头文件#include ,并增加链接参数-luuid。
如下是一段C程序,实现了生成UUID:
“`C
#include
#include
int main(int argc, const char* argv[])
{
uuid_t uuid;
char buf[64] = {0};
uuid_generate(uuid);
uuid_unparse(uuid, buf);
printf(“%s\n”, buf);
return 0;
}
在linux上,可以使用以上代码创建UUID,运行此程序后,能够获得一个有效的UUID,形如如下字符串:
11bfc650-e15a-4caa-a3d3-99cce97f5231
在某些情况下,要求实现创建可控的UUID,即自定义UUID,此时可以使用linux库函数uuid_generate_random和uuid_generate_time来生成,他们的原型分别为:```C
void uuid_generate_random(uuid_t out);void uuid_generate_time(uuid_t out);
uuid_generate_random函数会完全随机生成,uuid_generate_time函数会基于当前系统时间和节点标识来生成UUID,所以,基于同一台服务器运行的多次,只要时间相差不超过100ns,UUID将会一致。
总结:UUID是实现128位16字节的数字,linux下可以使用libuuid库中提供的函数来实现UUID生成,如果需要生成全局唯一的可控UUID,可以使用uuid_generate_time函数来实现。