2012-03-07 21 views
7

私はマルチプロセスLinuxシステムで作業しており、一意のIDを生成する必要があります。セキュリティは考慮されないので、ゼロから始まりカウントアップするIDジェネレータは問題ありません。また、それはローカルマシン内にあり、ネットワークは関与していません。明らかにこれを実装するのは難しいことではありませんが、既に提供されているものがあれば(軽量が望ましい)かどうかは不思議でした。Linuxでシステム全体の固有IDを生成する方法

答えて

14

これは... ... 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; 
} 
+0

返信いただきありがとうございます。プロセス内で呼び出すことができるものはありますか?idを返すために新しいプロセスを起動する必要はありませんか? – gimmeamilk

+0

はい。私はC + +の例で私の答えを更新しました。 – Johnsyweb

+0

ありがとうございました – gimmeamilk

1

uuidと呼ばれるコマンドラインツールがあり、あなたが望むものを正確に実行できます。私はそれがさまざまなディストリビューションでデフォルトでインストールされるのかどうかは分からないので、あなた自身でそれをしなければならないかもしれません。

0

も便利..

cat /etc/machine-id 

の/ etc /機械-IDファイルは、インストール時に設定されているローカルシステムのユニークなマシンIDが含まれています。マシンIDは、改行で終了する単一の16進数の32文字の小文字のマシンID文字列です。 16進数からデコードすると、これは16バイト/ 128ビットの文字列に対応します。

+0

私は手元にあったDebianシステムをチェックし、**そのファイルを見つけることができませんでした。 –

関連する問題