2013-04-19 72 views
0

我需要在C中生成guid, 如何在libc中生成guid(http://en.wikipedia.org/wiki/Globally_unique_identifier)。 我需要随机生成guid。有没有更好的方法来在gcc中生成guid

+0

什么令维基百科的规格混淆? 'libc'有一个'random()'函数,它可以产生从0到MAXINT的任何东西。你可以用它来产生随机字节,通过调整它的最大字节大小,甚至分割。这并不能保证特别好的随机性,但对于任何不太敏感的东西都是足够的。一旦你有字节,你只要按照维基百科规格 – rliu

+0

@roliu它可以保证唯一性遍及 – Kajal

+2

http://linux.die.net/man/3/libuuid? – Duck

回答

2

续:编号:http://linux.die.net/man/3/uuid_generate

uuid_generate_time_safe - 创建一个新的唯一的UUID值 梗概

#include <uuid/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); 
Description 

的uuid_generate函数创建一个新的通用唯一标识符(UUID)。如果可用,uuid将根据来自/ dev/urandom的高质量随机性生成。如果不可用,则uuid_generate将使用另一种算法,该算法使用当前时间,本地以太网MAC地址(如果可用)以及使用伪随机生成器生成的随机数据。 即使高质量的随机数生成器(即/ dev/urandom)不可用,uuid_generate_random函数也会强制使用全随机的UUID格式,在这种情况下,伪随机生成器将被替换。请注意,使用伪随机生成器可能会损害以此方式生成的UUID的唯一性。

相关问题