2012-03-07 16 views
7

Pracuję na wieloprocesowym systemie Linux i muszę generować unikalne identyfikatory. Bezpieczeństwo nie jest brane pod uwagę, więc generator identyfikatorów, który zaczyna od zera i liczy się, byłby w porządku. Poza tym nie ma w tym sieci lokalnej maszyny. Oczywiście nie jest trudno to zaimplementować, ale zastanawiałem się, czy coś już zostało dostarczone (najlepiej lekkie).Jak wygenerować unikalne ID dla całego systemu pod Linuksem

Odpowiedz

14

To brzmi jak zadanie dla ... ... uuidgen:

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

Jeśli chcesz zbudować go do własnej aplikacji lub usługi, musisz 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

Dzięki za odpowiedź. Czy istnieje coś, co można wywołać w ramach procesu, zamiast uruchamiać nowy, aby zwrócić identyfikator? – gimmeamilk

+0

Tak. Zaktualizowałem swoją odpowiedź na przykładzie w C++. – Johnsyweb

+0

dziękuję bardzo – gimmeamilk

1

Istnieje narzędzie wiersza poleceń o nazwie uuid, które zrobi dokładnie to, co chcesz. Nie jestem pewien, czy domyślnie jest instalowany w różnych dystrybucjach, więc być może będziesz musiał to zrobić sam.

0

również przydatne ..

cat /etc/machine-id 

Plik/etc/maszyna-id zawiera unikalny identyfikator urządzenia w systemie lokalnym, który jest ustawiony w trakcie instalacji. Identyfikator komputera to pojedynczy, zakończony znakiem nowej linii, szesnastkowy, 32-znakowy ciąg znaków ID maszyny. Po dekodowaniu z szesnastkowego odpowiada to 16-bajtowemu/128-bitowemu łańcuchowi znaków.

+0

Sprawdziłem system Debiana, który był pod ręką i ** nie mógł ** znaleźć tego pliku. –

Powiązane problemy