Linux下的UUID是通用唯一识别码 (Universally Unique Identifier)的简称,和Windows的GUID(全局唯一标识符Globally Unique Identifier)是一个东西,叫法不一样而已。至于GUID和UUID的介绍,可以查看百科了解。
    GUID和uuid使用非常多,却没有查到一个完整的Linux编程获取uuid的实现,或者实现的描述不清楚,所以总结一篇文章来说明。
    linux编程中,我们可以这样来包含uuid的头文件:
#include <uuid/uuid.h>
    然而,很可能一些系统会提示uuid.h文件找不到。因为uuid是需要自己提前安装的。
    安装uuid的方法(root用户下)如下:
yum install e2fsprogs-devel
yum install uuid-devel
yum install libuuid-devel

    安装完后,就可以找到uuid.h头文件了。先来看看效果图:

Linux编程获取uuid的代码实现分享

    分别格式化了两种显示uuid的格式,第一种最为常见,第二种也经常要用到,就是去掉了{}个-符号而已。
    下面是完整的linux下实现获取的uuid的代码:
#include <iostream>
#include <string>
using namespace std;
#include <uuid/uuid.h>
#include <stdio.h>
typedef struct _GUID {
    unsigned long Data1;
    unsigned short Data2;
    unsigned short Data3;
    unsigned char Data4[8];
} GUID;
string CreateGUID()
{
    GUID guid;
    uuid_generate(reinterpret_cast<unsigned char *>(&guid));
    char buf[64] = { 0 };
    snprintf(buf,sizeof(buf),
        "%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X",
        guid.Data1,
        guid.Data2,
        guid.Data3,
        guid.Data4[0],
        guid.Data4[1],
        guid.Data4[2],
        guid.Data4[3],
        guid.Data4[4],
        guid.Data4[5],
        guid.Data4[6],
        guid.Data4[7]) ;
    return std::string(buf) ;
}

int main()
{
    string guid = CreateGUID();
    cout << guid << endl;
}

   需要注意的是,GUID在linux系统是不存在的,所以我们才typedef了一个。不要使用uuid_t替换GUID定义变量。