我正在研究多进程Linux系统,需要生成唯一的ID。安全性不是一个考虑因素,所以从零开始并计数的ID生成器就可以了。它也只是在本地机器内,不涉及网络。显然,实现这一点并不难,但我只是想知道是否有任何已提供的东西(最好是轻量级的)。
答案 0 :(得分:18)
这听起来像是...... uuidgen
:
% uuidgen
975DA04B-9A5A-4816-8780-C051E37D1414
如果您想将其构建到自己的应用程序或服务中,则需要libuuid
:
#include <uuid/uuid.h>
#include <iostream>
int main()
{
uuid_t uu;
uuid_generate(uu);
char uuid[37];
uuid_unparse(uu, uuid);
std::cout << uuid << std::endl;
}
答案 1 :(得分:1)
有一个名为uuid的命令行工具可以完全按照您的意愿执行。我不确定它是否默认安装在各种发行版中,所以你可能必须自己这样做。
答案 2 :(得分:1)
如果未安装 uuidgen ,则可以使用 mktemp 。例如,对于16个字符(应该足以获得系统范围内的唯一ID)...
mktemp -u XXXXXXXXXXXXXXXX
答案 3 :(得分:0)
也很有用..
cat /etc/machine-id
/ etc / machine-id文件包含安装期间设置的本地系统的唯一计算机ID。计算机ID是一个以换行符结尾的十六进制,32个字符的小写机器ID字符串。从十六进制解码时,这对应于一个16字节/ 128位字符串。