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函数来实现。


数据运维技术 » Linux下生成UUID的C语言实现(linuxcuuid)