2012-03-07 5 views
7

Sto lavorando su un sistema Linux a più processi e ho bisogno di generare ID univoci. La sicurezza non è una considerazione, quindi un generatore di ID che inizia da zero e conta potrebbe andare bene. Inoltre è solo all'interno di una macchina locale, nessuna rete coinvolta. Ovviamente non è difficile da implementare, ma mi stavo chiedendo se ci fosse già qualcosa di disponibile (preferibilmente leggero).Come posso generare ID univoci a livello di sistema con Linux

risposta

14

Questo suona come un lavoro per ... ... uuidgen:

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

Se si vuole costruire nella propria applicazione o servizio, è necessario 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

Grazie per la risposta. C'è qualcosa che può essere invocato all'interno di un processo, piuttosto che dover accenderne uno nuovo solo per restituire l'id? – gimmeamilk

+0

Sì. Ho aggiornato la mia risposta con un esempio in C++. – Johnsyweb

+0

grazie mille – gimmeamilk

1

C'è uno strumento da riga di comando chiamato uuid che farà esattamente quello che vuoi. Non sono sicuro che venga installato di default in varie distribuzioni, quindi potresti doverlo fare da solo.

0

anche utile ..

cat /etc/machine-id 

Il/file della macchina-id/etc contiene l'ID macchina unica del sistema locale che è impostato durante l'installazione. L'ID macchina è una singola stringa ID macchina con terminazione terminata, esadecimale, a 32 caratteri, in caratteri minuscoli. Quando decodificato da esadecimale, corrisponde a una stringa di 16 byte/128 bit.

+0

Ho controllato un sistema Debian che era a portata di mano e ** non poteva ** trovare quel file. –

Problemi correlati