http://blog.chinaunix.net/uid-12567959-id-161022.html
Name
uuid_generate, uuid_generate_random, uuid_generate_time - create a newunique UUID value
Synopsis
#include <uuid/uuid.h>
void uuid_generate(uuid_t out);
void uuid_generate_random(uuid_t out);
void uuid_generate_time(uuid_t out);
Description
The uuid_generate function creates a new universally uniqueidentifier (UUID). The uuid will be generated based on high-quality randomnessfrom
/dev/urandom, ifavailable. If it is not available, then uuid_generate
will use an alternative algorithm which uses the current time, the localethernet MAC address (if available), and random data generated using apseudo-random generator.
The uuid_generate_random function forces the use of the all-randomUUID format, even if a high-quality random number generator (i.e., /dev/urandom)is not available, in which case a pseudo-random generator will be subsituted.Note that the use of a pseudo-random generator may compromise the uniqueness ofUUID's generated in this fashion.
The uuid_generate_time function forces the use of the alternativealgorithm which uses the current time and the local ethernet MAC address (ifavailable). This algorithm used to be the default one used to generate UUID,but because of the use of the ethernet MAC address, it can leak informationabout when and where the UUID was generated. This can cause privacy problems insome applications, so the uuid_generate function only uses thisalgorithm if a high-quality source of randomness is not available.
The UUID is 16 bytes (128 bits) long, which gives approximately 3.4x10^38unique values (there are approximately 10^80 elemntary particles in theuniverse according to Carl Sagan's Cosmos). The new UUID can reasonablybe considered unique among all UUIDs created on the local system, and amongUUIDs created on other systems in the past and in the future.
Return Value
The newly created UUID is returned in the memory location pointed to by out.
Conforming To
OSF DCE 1.1
Author
Theodore Y. Ts'o
Availability
http://e2fsprogs.sourceforge.net/
See Also
uuid(3), uuidgen(1),uuid_clear(3), uuid_compare(3), uuid_copy(3), uuid_is_null(3), uuid_parse(3), uuid_time(3), uuid_unparse(3)
Referenced By
libuuid(3)