首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux中生成随机UUID

在Linux中生成随机UUID
EN

Stack Overflow用户
提问于 2010-02-01 13:05:58
回答 8查看 25.6K关注 0票数 13

我陷入了一个奇怪的困境。我需要在我的Linux程序(我使用RPM分发它)中生成UUID。我不想通过要求用户安装libuuid来向我的应用程序添加另一个依赖项(似乎像CentOS这样的大多数Linux发行版中都没有包含libuuid )。

不是有一个标准的Linux系统调用来生成UUIDs (例如,在Windows中有CoCreateGuid)吗?命令uuidgen使用什么?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-02-02 14:34:03

感谢您的所有评论!

我看过了每一个,下面是最适合我的需求:

我需要的只是普通的基于时间的UUID,它是为安装应用程序的每个用户生成的随机数。RFC 4122中指定的UUID版本4正是如此。我经历了一个算法建议,并提出了一个非常简单的解决方案,它可以在Linux和Windows中工作(也许它太简单了,但它确实满足了需求!):

代码语言:javascript
复制
srand(time(NULL));

sprintf(strUuid, "%x%x-%x-%x-%x-%x%x%x", 
    rand(), rand(),                 // Generates a 64-bit Hex number
    rand(),                         // Generates a 32-bit Hex number
    ((rand() & 0x0fff) | 0x4000),   // Generates a 32-bit Hex number of the form 4xxx (4 indicates the UUID version)
    rand() % 0x3fff + 0x8000,       // Generates a 32-bit Hex number in the range [0x8000, 0xbfff]
    rand(), rand(), rand());        // Generates a 96-bit Hex number
票数 11
EN

Stack Overflow用户

发布于 2013-04-04 05:59:25

我是不是遗漏了什么?你不能:

代码语言:javascript
复制
cat /proc/sys/kernel/random/uuid
票数 21
EN

Stack Overflow用户

发布于 2014-09-13 07:32:58

我发现的一个好方法(对于linux dev)是#include <uuid/uuid.h>。然后,您可以调用一些函数:

代码语言:javascript
复制
void uuid_generate(uuid_t out);
void uuid_generate_random(uuid_t out);
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2174768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档