2012-03-07 7 views
7

Estoy trabajando en un sistema Linux de multiprocesos y necesito generar identificaciones únicas. La seguridad no es una consideración, por lo que un generador de ID que comience en cero y cuente estará bien. También es solo dentro de una máquina local, sin red involucrada. Obviamente, no es difícil implementar esto, pero me preguntaba si ya se proporcionó algo (preferiblemente ligero).¿Cómo puedo generar ID exclusivos para todo el sistema en Linux?

Respuesta

14

Esto suena como un trabajo para ... ... uuidgen:

% uuidgen 
975DA04B-9A5A-4816-8780-C051E37D1414 

Si usted quiere construir en su propia aplicación o servicio, tendrá que 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; 
} 
+0

Gracias por la respuesta. ¿Hay algo que pueda invocarse dentro de un proceso, en lugar de tener que iniciar uno nuevo solo para devolver la identificación? – gimmeamilk

+0

Sí. He actualizado mi respuesta con un ejemplo en C++. – Johnsyweb

+0

muchas gracias – gimmeamilk

1

Hay una herramienta de línea de comandos llamada uuid que hará exactamente lo que quieras. No estoy seguro de si se instala de manera predeterminada en varias distribuciones, por lo que puede que tenga que hacerlo usted mismo.

0

También es útil ..

cat /etc/machine-id 

El/archivo de la máquina-id/etc contiene la ID de máquina única del sistema local que se establece durante la instalación. La ID de la máquina es una cadena de ID de máquina con minúscula terminada en hexadecimal y 32 caracteres. Cuando se decodifica desde hexadecimal, esto corresponde con una cadena de 16 bytes/128 bits.

+0

Comprobé un sistema Debian que estaba a la mano y ** no pude ** encontrar ese archivo. –

Cuestiones relacionadas