当前位置: 技术问答>unix/linux知识
iis7站长之家
奇怪,Linux下的uuid_generate的问题。。
来源: 互联网 发布时间:2017-03-02
本文导语: 连续两次uuid_generate得到的结果一样?uuid_generate不是为了产生不一样的key的吗? 怎么样才能每次得到的keys唯一? #include #include int save2cache(char* keys) { /*生成uuid*/ uuid_t uu; uuid_generate(uu); memset(keys, 0x00...
连续两次uuid_generate得到的结果一样?uuid_generate不是为了产生不一样的key的吗?
怎么样才能每次得到的keys唯一?
gcc -o so so.c -luuid
./so
keys=bff40930
keys=bff40930
/////////////////
keys2=bff40930
keys3=bff40930
怎么样才能每次得到的keys唯一?
#include
#include
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=%sn", keys);
save2cache(keys);
printf("keys=%sn", keys);
printf("/////////////////n");
save2cache(keys2);
printf("keys2=%sn", keys2);
save2cache(keys3);
printf("keys3=%sn", keys3);
return 0;
}
gcc -o so so.c -luuid
./so
keys=bff40930
keys=bff40930
/////////////////
keys2=bff40930
keys3=bff40930
|
“memset(keys, 0x00, sizeof(keys))”这种写法是错的,sizeof(keys)得不到字串的长度
“sprintf(keys, "%x", uu)”写法也是错的,这是关键,这样只能将uu前4个字节(一个int类型)打印到keys中
“sprintf(keys, "%x", uu)”写法也是错的,这是关键,这样只能将uu前4个字节(一个int类型)打印到keys中