我陷入了一个奇怪的困境。我需要在我的Linux程序(我使用RPM分发它)中生成UUID。我不想通过要求用户安装libuuid来向我的应用程序添加另一个依赖项(似乎像CentOS这样的大多数Linux发行版中都没有包含libuuid )。
不是有一个标准的Linux系统调用来生成UUIDs (例如,在Windows中有CoCreateGuid)吗?命令uuidgen使用什么?
发布于 2010-02-02 14:34:03
感谢您的所有评论!
我看过了每一个,下面是最适合我的需求:
我需要的只是普通的基于时间的UUID,它是为安装应用程序的每个用户生成的随机数。RFC 4122中指定的UUID版本4正是如此。我经历了一个算法建议,并提出了一个非常简单的解决方案,它可以在Linux和Windows中工作(也许它太简单了,但它确实满足了需求!):
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发布于 2013-04-04 05:59:25
我是不是遗漏了什么?你不能:
cat /proc/sys/kernel/random/uuid发布于 2014-09-13 07:32:58
我发现的一个好方法(对于linux dev)是#include <uuid/uuid.h>。然后,您可以调用一些函数:
void uuid_generate(uuid_t out);
void uuid_generate_random(uuid_t out);https://stackoverflow.com/questions/2174768
复制相似问题