首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

奇怪,Linux下的uuid_generate的有关问题。

2013-03-26 
奇怪,Linux下的uuid_generate的问题。。连续两次uuid_generate得到的结果一样?uuid_generate不是为了产生不

奇怪,Linux下的uuid_generate的问题。。
连续两次uuid_generate得到的结果一样?uuid_generate不是为了产生不一样的key的吗?
怎么样才能每次得到的keys唯一?

C/C++ code
#include <stdio.h>#include <uuid/uuid.h>int save2cache(char* keys){  /*生成uuid*/  uuid_t uu;  uuid_generate(uu);  memset(keys, 0x00, sizeof(keys));  sprintf(keys, "%x", uu);  return 0;}int save2cache2(char* keys){  /*生成uuid*/  uuid_t uu;  uuid_generate_random(uu);  memset(keys, 0x00, sizeof(keys));  sprintf(keys, "%x", uu);  return 0;}int save2cache3(char* keys){  /*生成uuid*/  uuid_t uu;  uuid_generate_time(uu);  memset(keys, 0x00, sizeof(keys));  sprintf(keys, "%x", uu);  return 0;}int main(int argc, char** argv){  char keys[50], keys2[50], keys3[50];  save2cache(keys);  printf("keys=%s\n", keys);  save2cache(keys);  printf("keys=%s\n", keys);  printf("/////////////////\n");  save2cache(keys2);  printf("keys2=%s\n", keys2);  save2cache(keys3);  printf("keys3=%s\n", keys3);  return 0;}          




gcc -o so so.c -luuid
./so

keys=bff40930
keys=bff40930
/////////////////
keys2=bff40930
keys3=bff40930



在执行一次,结果可以不一样:
./so

keys=bff18780
keys=bff18780
/////////////////
keys2=bff18780
keys3=bff18780

是不是每次uuid_generate后,要释放些什么东西才行?uuid_clear后也不行啊。。。

求高人指教。

[解决办法]
没用过,也man不出来。。。

你可以灵活点的,直接read /dev/random拿几个字节用,或者gettimeofday之类的得到当前时间,拼成字符串,反正只要足够唯一就可以,调个md5或者crypt生成key就行了,都是一样的。

热点排行